[英]exclusion and inclusion not working in maven assembly plugin
在我的项目中,我有两个类Test1.java和Test2.java ,我的意图是构建两个jar,使得test1.jar应该只包含Tets1.java和test2.jar应该只包含Tets2.java 。
我在Maven程序集插件中添加了排除和包含,但似乎无法正常工作,在这两个jar中,我都能看到Test1.java和Test2.java
我的pom.xml在下面给出
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>build-a</id>
<configuration>
<excludes>
<exclude>Test2.java</exclude>
</excludes>
<includes>
<include>Test1.java</include>
</includes>
<archive>
<manifest>
<mainClass>com.example.MyMain</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>test1.jar</finalName>
</configuration>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
<execution>
<id>build-b</id>
<configuration>
<excludes>
<exclude>Test1.java</exclude>
</excludes>
<includes>
<include>Test2.java</include>
</includes>
<archive>
<manifest>
<mainClass>com.example.MyMain</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>test2.jar</finalName>
</configuration>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
更新版本(pom.xml)
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>build-a</id>
<configuration>
<excludes>
<exclude>**/Test.*</exclude>
</excludes>
<includes>
<include>**/Test1.*</include>
</includes>
<archive>
<manifest>
<mainClass>com.example.MyMain</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>test1.jar</finalName>
</configuration>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
<execution>
<id>build-b</id>
<configuration>
<excludes>
<exclude>**/Test.*</exclude>
</excludes>
<includes>
<include>**/Test2.*</include>
</includes>
<archive>
<manifest>
<mainClass>com.example.MyMain</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>test2.jar</finalName>
</configuration>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<include>
和<exclude>
是路径元素,因此您需要指定整个路径(或某些通配符),而不仅仅是文件名。 例如:
<excludes>
<exclude>**/Test2.*</exclude>
</excludes>
<includes>
<include>**/Test1.*</include>
</includes>
您应该使用一个自定义的assembly.xml
文件。
test1.jar
示例:
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
<id>test1.jar</id>
<formats>
<format>jar</format>
</formats>
<fileSets>
<fileSet>
<directory>src/main/java/</directory>
<excludes>
<exclude>**/Test2.*</exclude>
</excludes>
<includes>
<include>**/Test1.*</include>
</includes>
</fileSet>
</fileSets>
</assembly>
并在您的pom.xml
替换:
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
与:
<descriptors>
<descriptor>assembly.xml</descriptor>
</descriptors>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.