使用Maven配置文件控制构建执行

问题描述 投票:34回答:2

我需要修改大型项目的Maven构建,以在典型的开发构建过程中跳过某些步骤(即,不要构建* -source.jar文件)。我已经搜索了Maven的“条件执行”,但没有找到任何东西。

开发者资料听起来像是执行此操作的直观方法-但我不知道Maven有多直观。配置文件的文档显示了如何为不同的配置文件设置不同的属性(即数据库连接参数)。我想我可以设置一个属性,然后测试该属性是否在maven-source-plugin -executes-execution标记中设置。

这是在Maven中执行条件执行的正确方法吗?

在Maven中执行此操作的“正确”方法是什么?

maven-2
2个回答
40
投票
<profile> <id>source-jars</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> ...

事实上,maven-source-plugin usage page上有一个例子。当需要生成工件时,请使用mvn -P source-jars(或其他任何工具)。而已!如果只需要在发布时执行此操作,则release plugin甚至可以提供一种方法来定义要在发布插件配置中使用的配置文件。


9
投票
除非使用上述方法之一激活同一POM中的另一个配置文件,否则此配置文件将对所有版本自动激活。>

因此,您可以添加两个配置文件,其中一个是activeByDefault,其中包括相关的插件,另一个可以通过任何标准方式(例如,从命令行中的-P)激活,以防止运行时的默认配置文件。因此,profiles(或Maven设置或其他设置)中的pom.xml部分可能如下所示:

<profile> <id>source-jars</id> <activation> <activeByDefault>true</activeByDefault> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> ... </plugin> </plugins> </build> </profile> <profile> <!-- active this profile to disable the source-jars plugin --> <id>no-optional-plugins</id> </profile>

[不幸的是,我看不到一种方法可以使该方法很好地扩展以控制多个插件–我认为您需要O(n^2)个插件的n配置文件,但在这种简单情况下,它应该可以正常工作。

[Maven≥2.0.10的另一个可能更简单的选择是仅从上方获得source-jars配置文件(仍为activeByDefault),并在需要时通过在配置文件ID前面加上manually deactivate the profile-来获得!-PCLI标志后的]:

$ mvn -P !source-jars

此方法在多个插件上没有相同的O(n^2)问题,但灵活性也较差,因为无法通过系统属性,环境变量,JDK版本等来触发停用)>

© www.soinside.com 2019 - 2024. All rights reserved.