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、...)
我想知道是否可以在提交新标记之前将 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、...)