我需要修改大型项目的Maven构建,以在典型的开发构建过程中跳过某些步骤(即,不要构建* -source.jar文件)。我已经搜索了Maven的“条件执行”,但没有找到任何东西。
开发者资料听起来像是执行此操作的直观方法-但我不知道Maven有多直观。配置文件的文档显示了如何为不同的配置文件设置不同的属性(即数据库连接参数)。我想我可以设置一个属性,然后测试该属性是否在maven-source-plugin -executes-execution标记中设置。
这是在Maven中执行条件执行的正确方法吗?
在Maven中执行此操作的“正确”方法是什么?
<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甚至可以提供一种方法来定义要在发布插件配置中使用的配置文件。
因此,您可以添加两个配置文件,其中一个是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或-
来获得!
-P
CLI标志后的]:$ mvn -P !source-jars
此方法在多个插件上没有相同的
O(n^2)
问题,但灵活性也较差,因为无法通过系统属性,环境变量,JDK版本等来触发停用)>