Eug*_*sky 2 java maven maven-assembly-plugin
我的pom.xml包含以下内容来创建具有所有依赖项的项目的 jar。
现在我有一个src/main/resources运行应用程序所必需的属性文件(我想从 IDE 开始使用它),但我不想将其发送到创建的 jar 文件中,因为设置是单独维护的。
问题:如何获取包含所有依赖项的文件,但排除这些属性文件?
<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>
Run Code Online (Sandbox Code Playgroud)
正如maven-assembly-plugin文档所指定的:
如果您的项目想要将工件打包在 uber-jar 中,则程序集插件仅提供基本支持。如需更多控制,请使用Maven Shade 插件。
使用它,maven-shade-plugin您可以拥有一个胖罐子(就像使用程序集插件一样)并解决通过配置排除文件的类似问题(不需要外部程序集描述符文件)。
在您的情况下,要从组装的罐子中排除资源,您可以使用阴影过滤器。
一个简单的配置如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,您可以file_pattern使用.artifactmy.groupId:my.artifactId
注意:当从外部库中排除文件时,建议使用上述方法,但是您仍然可以maven-assembly-plugin通过自定义程序集描述符文件使用从您自己的项目中排除文件。
| 归档时间: |
|
| 查看次数: |
10368 次 |
| 最近记录: |