maven - 如何让 Maven 为同一个项目生成两个 jar?

标签 maven

我担心答案可能是“拆分项目”,但这里是......

我有一个项目,现在需要输出一个没有 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>

绑定(bind)到package阶段的默认绑定(bind)maven-jar-plugin将创建包含log4j.xml文件的jar文件,上面将创建不包含log4j.xml文件的jar文件,可以使用以下命令访问该jar文件分类器没有或者无论你如何命名。

这样做的优点是您可以通过一次 Maven 调用简单地创建两个 jar,例如:

mvn clean package

此外,它们将附加到项目并部署到适当的存储库。

关于maven - 如何让 Maven 为同一个项目生成两个 jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16367068/

相关文章:

spring - java.lang.NoSuchMethodError : okio. BufferedSource.rangeEquals(JLokio/ByteString;)Z

java - 远程存储库中存在的依赖项存在问题

maven - 从父级构建 Maven 模块,无需父级引用

Maven:从jar中提取文件

java - Cobertura 覆盖率报告和检查

android - 尝试使用Maven和/或Gradle将库导入android项目

java - Maven 依赖版本

java - 为什么 OSGI 捆绑模块要构建两次

java - 较新版本的依赖项是否会覆盖 Maven 项目中的旧版本?

android - 如何使用 Maven 将 ZXing 集成到 AndroidApp?