我担心答案很可能是“拆分项目”,但这里......
我有一个项目,我现在需要在没有log4j.xml 配置的情况下输出 jar 文件的版本。我想如果我可以有双重输出会很好:一个带有 log4j.xml 的 jar 和一个没有 log4j.xml 的重复 jar。我不想将项目拆分为一个文件。我已经尝试过 Assembly 插件,但我认为我还没有找到正确的配置。
我担心答案很可能是“拆分项目”,但这里......
我有一个项目,我现在需要在没有log4j.xml 配置的情况下输出 jar 文件的版本。我想如果我可以有双重输出会很好:一个带有 log4j.xml 的 jar 和一个没有 log4j.xml 的重复 jar。我不想将项目拆分为一个文件。我已经尝试过 Assembly 插件,但我认为我还没有找到正确的配置。
这种关系中最好的解决方案是不要使用配置文件,因为配置文件会强制您使用激活的配置文件再次运行构建,如果您喜欢使用发布插件等,这将不起作用。最简单的解决方案是使用这样的分类器:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>second-jar</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>without</classifier>
<excludes>
<exclude>**/log4j*</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
绑定到 package 阶段的默认绑定 maven-jar-plugin 将创建包含 log4j.xml 文件的 jar 文件,上面将创建没有 log4j.xml 文件的 jar 文件,可以使用没有或的分类器访问但是你的名字。
这样做的好处是您可以通过一次调用 maven 来创建两个 jar,例如:
mvn clean package
它们也将附加到项目中,并将部署到适当的存储库。
您可以maven jar plugin
像这样在第二个配置文件上配置:
<profiles>
<profile>
<id>nolog4j<id>
<build>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<excludes>
<exclude>log4j.xml</exclude>
</excludes>
</configuration>
</plugin>
</build>
</profile>
</profiles>
然后你可以运行mvn package -P nolog4j
它应该创建相同的 jar 但没有log4j.xml
文件(将exclude
标签调整为实际文件路径)更多信息在maven jar 插件
是的,您可以从一个 Maven 项目创建多个 JAR。工件的分类器可用于区分它们。
Maven 工件由以下部分组成:
默认情况下,分类器为空,但您可以在使用 maven-assembly-plugin 排除 log4j.xml 文件时将其设置为“nolog4j”。
我会使用配置文件。创建一个默认配置文件和一个没有 log4j.xml 的配置文件。调用 mvn package && mvn package -P otherprofile。