首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排除和包含在maven程序集插件中不起作用

排除和包含在maven程序集插件中不起作用
EN

Stack Overflow用户
提问于 2017-06-17 07:16:46
回答 2查看 1.9K关注 0票数 2

在我的项目中,我有两个类Test1.javaTest2.java,我的目的是构建两个jars,以便test1.jar应该只包含Tets1.javatest2.jar应该只包含E 110Tets2.javaE 211

我在maven程序集插件中添加了排除和包含,但它似乎不起作用,在Test1.javaTest2.java这两个jars中我都可以看到

我的pom.xml如下所示

代码语言:javascript
复制
<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)

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

发布于 2017-06-17 07:32:35

<include><exclude>是path元素,因此需要指定整个路径(或某些通配符),而不仅仅是文件名。例如:

代码语言:javascript
复制
<excludes>
    <exclude>**/Test2.*</exclude>
</excludes>
<includes>
    <include>**/Test1.*</include>
</includes>
票数 3
EN

Stack Overflow用户

发布于 2017-06-19 10:53:09

您应该使用自定义assembly.xml文件。

test1.jar示例:

代码语言:javascript
复制
<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中替换:

代码语言:javascript
复制
<descriptorRefs>
    <descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>

有:

代码语言:javascript
复制
<descriptors>
    <descriptor>assembly.xml</descriptor>
</descriptors>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44601860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档