繁体   English   中英

排除和包含在Maven程序插件中不起作用

[英]exclusion and inclusion not working in maven assembly plugin

在我的项目中,我有两个类Test1.javaTest2.java ,我的意图是构建两个jar,使得test1.jar应该只包含Tets1.javatest2.jar应该只包含Tets2.java

我在Maven程序集插件中添加了排除和包含,但似乎无法正常工作,在这两个jar中,我都能看到Test1.javaTest2.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM