我想知道是否可以在提交新标记之前使maven-release-plugin
运行特定脚本。
原因是,我有一个Dockerfile,我想用我的项目的新版本更新。
答案 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。