1

我有一个 Maven 项目,我正在为此运行两个单独的构建。

在一个构建中,我想通过禁用其中的 Maven 模块的 jar 创建来节省构建时间。(有 45 个 Maven 模块)。有一个 Maven-Jar-Plugin 用于创建罐子。

我想在命令行有条件地禁用 jar 创建,即寻找类似于-Dskiptests用于跳过单元测试的东西,尽管默认情况下有一个万能插件。

4

1 回答 1

2

maven-jar-plugin 不提供任何跳过选项。

但是,有几种方法可以实现您的要求。

您可以跳过默认(通过默认映射)创建 jar 的阶段,即阶段,因此只需调用package

mvn clean test

如果您不创建 jar 文件,那么附加阶段将毫无意义:package, install,deploy将没有任何要处理的内容。此外,其他集成阶段也可能会受到影响,具体取决于您的集成测试策略(如果有)。

或者,您可以按以下方式配置您的 pom:

<properties>
    <jar.creation>package</jar.creation>
</properties>

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>default-jar</id>
            <phase>${jar.creation}</phase>
          </execution>
        </executions>
      </plugin>
    </plugins>
</build>

因此,默认行为仍会提供 jar 创建,同时执行 maven,如下所示:

mvn clean install -Djar.creation=false

而是跳过 jar 的创建。

我们实际上在做什么:

  • 我们正在重新定义默认执行maven-jar-plugin
  • 我们正在覆盖它的执行 ID,因此可以更好地控制它
  • 我们将其执行阶段绑定到可配置(通过属性)阶段
  • 默认阶段(属性值)继续存在package
  • 在命令行时,您仍然可以将其更改为与标准 maven 阶段不同的任何值。也就是说,-Djar.creation=none也可以。
于 2016-06-09T10:35:58.217 回答