Personalmente, penso che la soluzione più pulita sarebbe quella di utilizzare due profili (uno a seconda del manufatto con il classificatore, l'altro sul "normale" artefatto). Ma puoi davvero ottenere ciò che desideri con un assemblaggio personalizzato. Non penso che tu stia andando nella giusta direzione. Ecco come farei ...
Prima di tutto, crea un progetto specifico per l'assemblaggio e dichiara sia la webapp che l'artefatto con il classificatore come dipendenze. Qualcosa di simile a questo:
<project>
...
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>artifact</artifactId>
<version>${project.version}</version>
<classifier>end-user<classifier>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>zewebapp</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/end-user.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!-- this is used for inheritance merges -->
<phase>package</phase>
<!-- append to the packaging phase. -->
<goals>
<goal>single</goal>
<!-- goals == mojos -->
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Poi, nel descrittore di montaggio:
<assembly>
<id>end-user</id>
<formats>
<format>war</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<unpack>true</unpack>
<unpackOptions>
<excludes>
<exclude>**/artifact-*.jar</exclude>
</excludes>
</unpackOptions>
<includes>
<include>*:war</include>
</includes>
</dependencySet>
<dependencySet>
<unpack>false</unpack>
<outputDirectory>WEB-INF/lib</outputDirectory>
<includes>
<include>group:artifact:jar:*:end-user</include>
</includes>
</dependencySet>
</dependencySets>
</assembly>
Fondamentalmente, questo dice il plugin di montaggio per ottenere la guerra per zewebapp
ed a disfare, ma di escludere l'artefatto indesiderata, mentre l'estrazione . Quindi, il plug-in di assembly ottiene l'artefatto con il classificatore e lo inserisce in WEB-INF/lib
(quindi lo sostituiamo all'originale). Infine, il tutto è confezionato come una guerra.
Ho provato questo su un esempio semplificato, dovrebbe funzionare.
fonte
2010-04-23 05:15:11
Ho avuto un problema simile. Ho trovato questa domanda FAQ mi ha aiutato http://maven.apache.org/plugins/maven-assembly-plugin/faq.html#dashClassifier – Stewart