2010-09-14 12 views
5

Tengo un proyecto maven jerárquico, del cual estoy tratando de construir un instalador nativo para varios de los submódulos. Estoy usando el nombre de mi producto como prefijo: <finalName>xyz-${artifactId}</finalName> en el POM padre, de modo que todos mis frascos de artefactos tengan una convención de nomenclatura estándar.el ensamblaje de maven ignora finalName para artefactos dependientes

xyz-parent 
+-- util 
     +--- target/xyz-util.jar 
+-- core 
     +--- target/xyz-core.jar 
+-- app1 <--- "builds an installer as part of the package phase" 
     +--- target/xyz-app1.jar 
+-- app2 <--- "builds an installer as part of the package phase" 
     ... 

Necesito materializar todas las jarras dependientes en un directorio (ya que la configuración inno no sabe nada de maven). Así que para cada submódulo que es un instalador planeo usar Maven-montaje-plugin, a continuación, utilizar algo como lo siguiente en mi Inno Setup:

Source: "target\pkg\lib\*.jar"; DestDir: "{app}\external"; Flags: ignoreversion; 

Cuando corro mvn clean package, me sale un directorio target/xyz-app1-bin/xyz-app1/lib con toda la tarros dependientes, sin embargo ninguno de los frascos producidos por mis proyectos hermanos tienen sus nombres finales correctas (por ejemplo, tengo util-0.0.1-SNAPSHOT.jar en lugar de xyz-util.jar)

Este problema parece similar a this post, pero no tengo ni idea de lo "adjuntar" es (tal vez obsoleto).

Respuesta

3

he podido utilizar finalName directamente, sin embargo, me las arreglé para volver a implementar la lógica finalName quería utilizar conjuntos de dependencias - partición de este modo mis dependencias en un conjunto externo e interno (basado en el groupId):

<assembly> 
    <id>bin</id> 
    <formats> 
    <format>dir</format> 
    </formats> 
    <dependencySets> 
    <dependencySet> 
     <outputDirectory>external</outputDirectory> 
     <outputFileNameMapping> 
     ${artifact.artifactId}.${artifact.extension} 
     </outputFileNameMapping> 
     <excludes> 
     <exclude>com.xyz:*</exclude> 
     </excludes> 
    </dependencySet> 

    <dependencySet> 
     <outputDirectory>lib</outputDirectory> 
     <outputFileNameMapping> 
     xyz-${artifact.artifactId}.${artifact.extension} 
     </outputFileNameMapping> 
     <includes> 
     <include>com.xyz:*</include> 
     </includes> 
    </dependencySet> 

    </dependencySets> 
</assembly> 
1

Usted debe ser capaz de utilizar finalName utilizando directamente (esto funcionó para mí):

<outputFileNameMapping> 
    ${artifact.build.finalName}.${artifact.extension} 
</outputFileNameMapping> 
Cuestiones relacionadas