我有一个包部署到一个提供log4j的容器。但同时包具有主类,用户可以从命令行执行它。
我的问题是如何构建jar:
<scope>provided</scope>
)最终它不一定只是一个jar文件。可以有一个jar用于部署,另一个用于手动执行。在这种情况下,但两个罐子必须通过一次maven调用来构建。
我认为它可以由两个<execution>
的maven-assembly-plugin管理,但我真的不知道如何只在其中一个中包装log4j依赖。
答案 0 :(得分:0)
我可以使用shade插件管理它。我的设置是:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>standalone</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>***path.to.main.class***</mainClass>
</transformer>
</transformers>
<finalName>${artifactId}-standalone</finalName>
</configuration>
</execution>
<execution>
<id>container</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>log4j</exclude>
</excludes>
</artifactSet>
<minimizeJar>true</minimizeJar>
</configuration>
</execution>
</executions>
</plugin>