在发布时运行maven配置文件:仅准备

时间:2014-06-06 16:14:58

标签: java git maven jenkins

我通过使用

调用maven来启动jenkins的发布过程
-Dresume=false clean release:prepare release:perform

由于我想在准备过程完成之前更改源代码(添加目录和文件并将它们提交到git),我想运行一个配置文件' doAtPrepare'仅在发布时:准备阶段。该配置文件已在正确的位置工作,但不幸的是两次调用。一旦发布:准备和发布一次:执行阶段。当提交到一个分离的头部时,后者会产生错误。在git。

要在发布时运行配置文件:仅执行阶段,配置选项' releaseProfiles'在maven-release-plugin中有效。但我反过来需要它,到目前为止还没有找到解决方案。

我尝试使用profile.activation.properties(profile =!doAtPrepare),尝试设置变量(-D)并使用profile.activation.properties检查它们,尝试检查profile.activation.file中的现有文件(因为文件名包含$ {version}参数,因此尝试在jenkins命令行使用-P(在两个阶段触发配置文件)等等,因此无法正常工作。

有谁可以帮我找到合适的解决方案?

1 个答案:

答案 0 :(得分:0)

我找到了解决方法,但不是真正的解决方案。仍然欢迎更好的建议。

首先,添加一个完成所需工作的配置文件:

    <profile>
        <id>createNextDir</id>
        <build>
            <plugins>
                <plugin>
                    <!-- whatever you want -->
                </plugin>
            </plugins>
        </build>
    </profile>

接下来,在配置文件中添加一个作业,在目标目录中创建一个具有固定文件名的虚拟文件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
        <execution>
            <id>createNextDir1</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <target>
                    <propertyfile file="target/done.lock" comment="Version ${project.version}">
                    </propertyfile>
                </target>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>ant-contrib</groupId>
            <artifactId>ant-contrib</artifactId>
            <version>20020829</version>
        </dependency>
    </dependencies>
</plugin>

最后一步是仅在文件不存在时激活配置文件。请注意,在发布期间:执行基目录是target / checkout / yourproject,因此需要引用正确的文件../../../ yourproject / target / done.lock

<profile>
    <id>createNextDir</id>
    <activation>
        <file>
            <missing>../../../yourproject/target/done.lock</missing>
        </file>
    </activation>
    <!-- Rest of profile -->
</profile>