如何在 Maven 项目的命令行中禁用 jar 创建?
Posted
技术标签:
【中文标题】如何在 Maven 项目的命令行中禁用 jar 创建?【英文标题】:How to disable jar creation in commandline in a maven project? 【发布时间】:2016-10-09 22:19:00 【问题描述】:我有一个 maven 项目,我正在为其运行两个单独的构建。
在一个构建中,我想通过禁用其中的 Maven 模块的 jar 创建来节省构建时间。(有 45 个 Maven 模块)。有一个 Maven-Jar-Plugin 用于创建 jars。
我想在命令行有条件地禁用 jar 创建,即寻找类似于 -Dskiptests
的东西,用于跳过单元测试,尽管默认情况下有一个万能插件。
【问题讨论】:
【参考方案1】:maven-jar-plugin
does not provide 任何跳过选项。
但是,有几种方法可以实现您的要求。
你可以跳过phase,它默认带来(via default mappings)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
也可以。
【讨论】:
@Priyanka.Patil 这个答案有用吗?你没有分享任何进一步的反馈,也没有accept。只是检查。以上是关于如何在 Maven 项目的命令行中禁用 jar 创建?的主要内容,如果未能解决你的问题,请参考以下文章
在命令行中使用 maven 编译整个项目后如何运行单个类? [复制]
SpringBoot项目jar包命令行部署运行时提示“没有主清单属性”问题