具有 属性 个已激活配置文件的 maven-release-plugin
maven-release-plugin with property activated profiles
我有一个项目,其中大部分配置文件根据文件存在和系统 属性 的组合自动激活。例如:
<profile>
<id>when-releasing-java-generate-sources</id>
<activation>
<file>
<exists>${basedir}/src/main/java</exists>
</file>
<property>
<name>build.release</name>
</property>
现在我需要发布和部署这个项目的工件,我将使用 maven-release-plugin。
我的问题是,即使我在命令行中传递 -Dbuild.release,我的配置文件也没有被激活。
我也尝试使用 -Darguments=-Dbuild.release,但看不到正在执行的配置文件中设置的插件。
那么,有什么方法可以使用 maven-release-plugin 激活我的项目配置文件吗?
经过数小时深入研究我的问题后,我找到了解决方案。
我发现的第一件事是 maven-release-plugin 有一个烦人的限制:当你的项目有一个不是父级的聚合器 POM 时它不起作用。
所以我必须解决的第一件事是将父 POM 提升到项目层次结构的顶部,并将其也变成聚合器。
一旦完成,我需要以这种方式设置发布插件:
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<arguments>-Dc8tech.build.release -Dc8tech.build.test.coverage ${arguments}</arguments>
<tagNameFormat>v@{project.version}</tagNameFormat>
<autoVersionSubmodules>true</autoVersionSubmodules>
<releaseProfiles>when-releasing-ensure-requirements</releaseProfiles>
</configuration>
</plugin>
然后我就可以正常发布我的项目了。
我有一个项目,其中大部分配置文件根据文件存在和系统 属性 的组合自动激活。例如:
<profile>
<id>when-releasing-java-generate-sources</id>
<activation>
<file>
<exists>${basedir}/src/main/java</exists>
</file>
<property>
<name>build.release</name>
</property>
现在我需要发布和部署这个项目的工件,我将使用 maven-release-plugin。
我的问题是,即使我在命令行中传递 -Dbuild.release,我的配置文件也没有被激活。 我也尝试使用 -Darguments=-Dbuild.release,但看不到正在执行的配置文件中设置的插件。
那么,有什么方法可以使用 maven-release-plugin 激活我的项目配置文件吗?
经过数小时深入研究我的问题后,我找到了解决方案。
我发现的第一件事是 maven-release-plugin 有一个烦人的限制:当你的项目有一个不是父级的聚合器 POM 时它不起作用。
所以我必须解决的第一件事是将父 POM 提升到项目层次结构的顶部,并将其也变成聚合器。
一旦完成,我需要以这种方式设置发布插件:
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<arguments>-Dc8tech.build.release -Dc8tech.build.test.coverage ${arguments}</arguments>
<tagNameFormat>v@{project.version}</tagNameFormat>
<autoVersionSubmodules>true</autoVersionSubmodules>
<releaseProfiles>when-releasing-ensure-requirements</releaseProfiles>
</configuration>
</plugin>
然后我就可以正常发布我的项目了。