Maven 在发布:准备和发布:执行时激活配置文件

Maven 在发布:准备和发布:执行时激活配置文件,maven,maven-release-plugin,Maven,Maven Release Plugin,我找不到在release:prepare和release:perform(两者)目标上激活某个Maven配置文件的解决方案。大概是这样的: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.2.1</version> <co

我找不到在
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>

org.apache.maven.plugins
maven发布插件
2.2.1
假的
部署
-Pmy释放

就是不管用。我知道
releaseProfiles
设置仅在
release:perform
期间有效,因此我认为
参数
设置正是我想要的,但是
我的配置文件
配置文件在执行期间不处于活动状态。我做错什么了吗?

这看起来像是一个重复的问题。请看这个问题,它有答案。

基本上,版本2.2.1的发布插件添加了一个
releaseProfiles
参数,允许您定义要在发布期间启用的配置文件

不幸的是,似乎有一个bug会阻止它做你想做的事情

编辑


我在本例中使用的一件事不是使用
-p
参数,而是通过使用
-Denv=release
的环境设置触发概要文件。然后在POM中,我根据
env
的值激活概要文件。这对我来说一直有效。

因为maven release plugin启动附加实例时,您必须指定附加参数。你的情况

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <arguments>${myReleaseArgs}</arguments>
    </configuration>
</plugin>

是的,它必须复制。

-Darguments=“-PmyProfile”似乎可以完成这项工作。

它在Jenkins中通过激活两个版本的配置文件:准备和发布:通过设置两个属性执行

<build>
  <plugins>
    <plugin>
      <artifactId>maven-release-plugin</artifactId>
      <version>2.5.1</version>
      <configuration>
        <releaseProfiles>myprofile</releaseProfiles>
        <arguments>-Pmyprofile</arguments>
      </configuration>
    </plugin>
  </plugins>
</build >

maven发布插件
2.5.1
我的个人资料
-Pmyprofile
尽管上述方法非常有效,但我发现使用文件激活的配置文件更有用。“主”配置文件的旧概念导致了一个问题,因为我在我的父pom中有该配置文件。这意味着,它在每一个模块中都被激活了,任意的


为了解决这个问题,我在profile中使用了文件激活方法。它甚至可以更好地工作,并且作为一个奖励,它简化了Jenkins中的发布。在Eclipse中,在命令行中,在Jenkins(又名everywhere)中,maven检测到该文件,并且不必配置maven发布插件。此外,配置文件仅在右侧模块中处于活动状态

谢谢你的回答,@nwinkler
releaseProfiles
参数仅与
release:perform
目标相关,因此在
release:prepare
期间不起作用。而且,你是对的,它的行为真的很奇怪。您关于
-Dmy release
变量的提示实际上是我当前的解决方法。我提到它并不是为了直截了当地回答我的问题,也不是为了提出任何思考的途径。然而,这似乎是目前唯一(或至少是最好)的方法。我已经尝试了
2.3-SNAPSHOT
版本的
maven发布插件
,但是stil不能正常工作。悲哀。添加
-prelese
对我来说很有效。即使在maven-release-plugin-3.0.0-M3中,
release
选项似乎也无能为力。
<build>
  <plugins>
    <plugin>
      <artifactId>maven-release-plugin</artifactId>
      <version>2.5.1</version>
      <configuration>
        <releaseProfiles>myprofile</releaseProfiles>
        <arguments>-Pmyprofile</arguments>
      </configuration>
    </plugin>
  </plugins>
</build >