在 release:prepare 和 release:perform 上激活配置文件
Posted
技术标签:
【中文标题】在 release:prepare 和 release:perform 上激活配置文件【英文标题】:Profile activation on both release:prepare and release:perform 【发布时间】:2012-04-03 14:05:52 【问题描述】:我找不到在 release:prepare
和 release:perform
(两者)目标上激活某些 Maven 配置文件的解决方案。像这样的:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<useReleaseProfile>false</useReleaseProfile>
<goals>deploy</goals>
<arguments>-Pmy-release</arguments>
</configuration>
</plugin>
只是不起作用。我知道releaseProfiles
设置仅在release:perform
期间有效,所以我只是认为arguments
设置正是我想要的,但my-profile
配置文件在执行期间不活动。我做错了吗?
【问题讨论】:
【参考方案1】:这似乎是一个重复的问题。请看一下这个问题,它有答案。 maven release plugin ignores releaseProfile
基本上 2.2.1 版的发布插件添加了一个 releaseProfiles
参数,允许您定义要在发布期间启用的配置文件。
http://maven.apache.org/plugins/maven-release-plugin/examples/perform-release.html
不幸的是,似乎有一个错误会阻止它做你想做的事......
编辑
我在这种情况下使用的一件事不是使用-P
参数,而是使用-Denv=release
通过环境设置触发配置文件。然后在 POM 中,我根据env
的值激活了配置文件。这一直对我有用。
【讨论】:
感谢您的回答,@nwinkler。releaseProfiles
参数仅与release:perform
目标相关,因此在release:prepare
期间不起作用。而且,你是对的,它的行为无论如何都非常奇怪。您对-Dmy-release
变量的提示实际上是我当前的解决方法。我没有提到它是为了让我的问题直截了当,也没有提出任何思考的途径。然而,这似乎是目前唯一(或至少是最好的)方法。我已经尝试过2.3-SNAPSHOT
的maven-release-plugin
版本,但仍然无法正常工作。伤心。【参考方案2】:
-Darguments="-PmyProfile" 似乎可以胜任。
【讨论】:
【参考方案3】:因为 maven 发布插件会启动额外的实例,所以您必须指定额外的参数。给你的情况
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.4</version>
<configuration>
<arguments>$myReleaseArgs</arguments>
</configuration>
</plugin>
和执行
mvn release:prepare release:perform -DmyReleaseArgs="-Pmy-release -DskipTests=true" -Pmy-release -DskipTests=true
是的,它必须被复制。
【讨论】:
【参考方案4】:它可以在 Jenkins 中通过设置两个属性来激活 release:prepare 和 release:perform 的配置文件
<build>
<plugins>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<releaseProfiles>myprofile</releaseProfiles>
<arguments>-Pmyprofile</arguments>
</configuration>
</plugin>
</plugins>
</build >
尽管上述方法效果很好,但我发现使用文件激活配置文件更有用。带有“主”配置文件的旧概念导致了一个问题,因为我在我的父 pom.xml 中有配置文件。这意味着,它在每个模块中都被任意激活。
为了解决这个问题,我使用了profile中的文件激活方法。它工作得更好,作为奖励,它简化了 Jenkins 中的发布。在 Eclipse 中,在命令行中,在 Jenkins 中,也就是无处不在,maven 会检测文件,并且不必配置 maven-release-plugin。此外,配置文件仅在正确的模块中处于活动状态。
【讨论】:
添加<arguments>-Prelease</arguments>
对我有用。即使在 maven-release-plugin-3.0.0-M3 中,<releaseProfiles>release</releaseProfiles>
选项似乎也无济于事。以上是关于在 release:prepare 和 release:perform 上激活配置文件的主要内容,如果未能解决你的问题,请参考以下文章
运行 mvn release:prepare 的 svn commit 问题
使用 mvn release:prepare,是不是可以指示 Maven 在提交命令的子模块 pom 位置中使用正斜杠?
使用eclipse执行maven-release-plugin插件发布jar异常问题(.project)(Cannot prepare the release because you have loc