具有 属性 个已激活配置文件的 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>

然后我就可以正常发布我的项目了。