Persönlich denke ich, dass die sauberste Lösung wäre, zwei Profile zu verwenden (eines davon hängt vom Artefakt mit dem Klassifikator ab, das andere vom "regulären" Artefakt). Aber Sie können tatsächlich mit einer benutzerdefinierten Baugruppe erreichen, was Sie wollen. Ich glaube nur nicht, dass du in die richtige Richtung gehst. Hier ist, wie ich es tun würde ...
Erstellen Sie zuerst ein bestimmtes Projekt für die Assembly und deklarieren Sie sowohl die Webanwendung als auch das Artefakt mit dem Klassifizierer als Abhängigkeiten. Etwas wie folgt aus:
<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>
Dann in Ihrem Assembly Descriptor:
<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>
Im Grunde ist dies erzählt die Montage-Plugin, den Krieg für zewebapp
zu bekommen und es zu entpacken, aber das unerwünschte Artefakt auszuschließen beim Auspacken . Dann holt das Assembly-Plugin das Artefakt mit dem Klassifikator und legt es in WEB-INF/lib
(so ersetzen wir es durch das Original). Schließlich ist das Ganze als Krieg verpackt.
Ich testete dies an einem vereinfachten Beispiel, es sollte funktionieren.
Ich hatte ein ähnliches Problem. Ich fand diese FAQ-Frage half mir http://maven.apache.org/plugins/maven-assembly-plugin/faq.html#dashClassifier – Stewart