在我的项目中,我有两个类Test1.java和Test2.java,我的目的是构建两个jars,以便test1.jar应该只包含Tets1.java和test2.jar应该只包含E 110Tets2.javaE 211。
我在maven程序集插件中添加了排除和包含,但它似乎不起作用,在Test1.java和Test2.java这两个jars中我都可以看到
我的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>发布于 2017-06-17 07:32:35
<include>和<exclude>是path元素,因此需要指定整个路径(或某些通配符),而不仅仅是文件名。例如:
<excludes>
<exclude>**/Test2.*</exclude>
</excludes>
<includes>
<include>**/Test1.*</include>
</includes>发布于 2017-06-19 10:53:09
您应该使用自定义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>https://stackoverflow.com/questions/44601860
复制相似问题