maven jar插件排除失败
我们正试图从同一个pom文件中构建两个JAR(是的,我读到有人说不要),因为出于内部政治原因,我们需要一个拥有所有资源的JAR,一个没有。我们已经为maven jar插件配置了一个我们认为应该可以工作的配置,但是资源总是包括在内的。以下是我们pom文件的相关部分:maven jar插件排除失败,maven,maven-jar-plugin,Maven,Maven Jar Plugin,我们正试图从同一个pom文件中构建两个JAR(是的,我读到有人说不要),因为出于内部政治原因,我们需要一个拥有所有资源的JAR,一个没有。我们已经为maven jar插件配置了一个我们认为应该可以工作的配置,但是资源总是包括在内的。以下是我们pom文件的相关部分: maven jar插件 包装消费者 包裹 消费者 src/main/resources 真的 **/*.bmp **/*jpg先生 **/*.jpeg **/*.gif **/*.xml **/*.sql **/*.log4j **
maven jar插件
包装消费者
包裹
消费者
src/main/resources
真的
**/*.bmp
**/*jpg先生
**/*.jpeg
**/*.gif
**/*.xml
**/*.sql
**/*.log4j
**/*.物业
**/*sh先生
罐子
当我们构建时,正如人们所期望的,我们得到了OurProject.Jar和OurProject-consumer.Jar,但是每个Jar文件中都有相同的资源
我们尝试了***
和***/resources/*.
而不是列表或特定扩展。没有快乐。我希望我们缺少一些基本的东西。我建议您将其用于您的消费者jar,但既然您决定使用maven jar插件,那么让我们修复您的构建
这里的问题是,您将阻止资源从jar中删除的设置与实际从jar中排除资源的设置混淆了(两者都使用
标记)
以下配置(在
内部)在打包阶段触发对jar:jar
的第二次调用。它将从使用者jar中排除所需的资源(有效地做您想做的事情):
有了这两种配置,您将实际构建两个jar。默认设置包含所有资源(包括筛选的xml和属性文件)和没有资源的辅助使用者jar。我建议如下所示:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>second-jar</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>without</classifier>
<excludes>
<exclude>**/*</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
org.apache.maven.plugins
maven jar插件
第二罐
罐子
没有
**/*
当然要替换排除部分(否则您将创建一个空罐子)。感谢您的快速回答@khmarbaise!考虑到Anthony的编辑,这个解决方案奏效了。谢谢@Anthony Acioly。只需将标签移出即可解决问题。我不理解你的标签块的需要,因为我们的jar没有标签看起来是正确的。我们遇到的另一个警告是:当我们第一次进行更改时,它正确地将POM文件从消费者jar中排除,这意味着没有对consuer jar中的任何内容进行更改,所以它没有重建它!不用说,这给我们带来了一些困惑和挫折,直到我们注意到两个jar文件上的时间戳不同为止。我假设您需要过滤,因为原始的true
。至于pom.xml,如果您想要它回来,您可能需要重新考虑***.xml
模式。
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/*.xml</exclude>
<exclude>**/*.properties</exclude>
</excludes>
</resource>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>second-jar</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>without</classifier>
<excludes>
<exclude>**/*</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>