如何在maven项目的命令行中禁用jar创建?

问题描述 投票:0回答:1

我有一个maven项目,我正在运行两个独立的构建。

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

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

maven maven-3 pom.xml maven-surefire-plugin maven-jar-plugin
1个回答
1
投票

maven-jar-plugin does not provide任何跳过选项。

但是,有几种方法可以满足您的要求。

你可以跳过phase,它默认带来(via default mappings)jar创建,即package阶段,因此只需调用

mvn clean test

如果你不创建一个jar文件,那么额外的阶段是没有意义的:packageinstalldeploy将无法处理任何事情。此外,根据您的集成测试策略(如果有),其他集成阶段也可能会受到影响。

或者,您可以按如下方式配置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也会奏效。
© www.soinside.com 2019 - 2024. All rights reserved.