maven-release-plugin在提交之前自动运行脚本

时间:2016-06-22 09:19:27

标签: maven docker maven-release-plugin

我想知道是否可以在提交新标记之前使maven-release-plugin运行特定脚本。

原因是,我有一个Dockerfile,我想用我的项目的新版本更新。

2 个答案:

答案 0 :(得分:1)

您可以使用release:perform目标的completionGoals选项:

  

在完成准备步骤后运行的目标,在转换回下一个开发版本之后但在提交之前。空格分隔。

maven-exec-plugin通过exec目标执行您的脚本。

一个简单的例子如下:

<build>
    <plugins>
        ....
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.5.0</version>
            <configuration>
                <!-- example: executing an hello message on Windows console -->
                <executable>cmd</executable>
                <arguments>
                    <argument>/C</argument>
                    <argument>echo</argument>
                    <argument>hello</argument>
                </arguments>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
            <configuration>
                ...
                <completionGoals>exec:exec</completionGoals>
            </configuration>
        </plugin>
    </plugins>
</build>

请注意上面completionGoals的值,我们实际上告诉Maven还要执行exec插件及其exec目标,然后按照上面的步骤选择我们的全局配置。< / p>

在您的情况下,上面的exec配置类似于:

<configuration>
    <executable>your-script</executable>
    <!-- optional -->
    <workingDirectory>/tmp</workingDirectory>
    <arguments>
        <argument>-X</argument>
        <argument>myproject:dist</argument>
    </arguments>
</configuration>

根据发布准备的确切位置,您还可以考虑使用其他preparationGoals配置选项:

  

目标是作为准备步骤的一部分,在转换之后但在提交之前运行。空格分隔。

默认值为clean verify,在这种情况下为clean verify exec:exec

答案 1 :(得分:1)

你可以像@dimatteo那样说,但我鼓励你不要这样做,因为docker和maven是两个不同用途的工具。

如果你想自动执行这两个动作,可以使用一些东西(shell,jenkins,...)来启动maven然后启动docker。