My pom.xml
包含以下内容来创建具有所有依赖项的项目的 jar。
现在我有一个属性文件src/main/resources
这是运行应用程序所必需的(我想从 IDE 开始使用它),但我不想将其发送到创建的 jar 文件中,因为设置是单独维护的。
Question:如何获取包含所有依赖项的文件,但排除这些属性文件?
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>make-jar</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<mainClass>x.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
正如指定的maven-assembly-plugin http://maven.apache.org/plugins/maven-assembly-plugin/文档:
如果您的项目想要将工件打包在 uber-jar 中,则程序集插件仅提供基本支持。如需更多控制,请使用Maven 阴影插件.
使用maven-shade-plugin https://maven.apache.org/plugins/maven-shade-plugin您可以拥有一个 fat jar(例如使用程序集插件)并解决通过配置排除文件的类似问题(不需要外部程序集描述符文件)。
在您的情况下,要从组装的 jar 中排除资源,您可以使用遮光滤镜 https://maven.apache.org/plugins/maven-shade-plugin/examples/includes-excludes.html.
一个简单的配置如下所示:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>**/*file_pattern*</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
在上面的例子中,您可以自定义file_pattern
或缩小您的过滤范围artifact
元素使用你的my.groupId:my.artifactId
.
注意:当从外部库中排除文件时,建议使用上述方法,但是您仍然可以使用maven-assembly-plugin
用于通过自定义从您自己的项目中排除文件汇编描述符 https://maven.apache.org/plugins/maven-assembly-plugin/assembly.html file.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)