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

maven-release-plugin automatically run a script before commit

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

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

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

Goals to run on completion of the preparation step, after transformation back to the next development version but before committing. Space delimited.

并实现 maven-exec-plugin execute your script via its 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 目标,然后它将像上面那样获取我们的全局配置.

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

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

根据发布准备的具体时间点,您还可以考虑使用额外的 preparationGoals 配置选项:

Goals to run as part of the preparation step, after transformation but before committing. Space delimited.

默认值为 clean verify,在本例中为 clean verify exec:exec

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

如果您想自动执行这 2 个操作,请使用将启动 maven 然后 docker.

的东西(shell、jenkins、...)