我正在使用maven发布插件。问题很简单:我不想在发布时进行部署:执行。我实际上想执行一个 shell 脚本来为我进行部署。所以我有两件事要完成:
以某种方式禁用发布中的默认“部署”目标:执行
不知何故 make release:perform 调用 exec:exec 插件来执行 shell 脚本
这是我的pom:
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.0</version>
<configuration>
<tagBase>svn://saoj-la.dyndns.org/webapp-test/tags</tagBase>
<connectionUrl>scm:svn:svn://saoj-la.dyndns.org/webapp-test/trunk</connectionUrl>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>/bin/sh</executable>
<arguments>
<argument>run.sh</argument>
</arguments>
</configuration>
</plugin>
有点晚了,但仅供参考:
对于步骤 1,您可以使用“跳过”选项禁用 Maven 部署步骤。点击这里参考。
在命令行上您可以调用类似以下内容:
mvn release:perform -Darguments="-Dmaven.deploy.skip=true"
我正在使用maven发布插件。问题很简单:我不想在发布时进行部署:执行。我实际上想执行一个 shell 脚本来为我进行部署。
我一定错过了一些东西,因为当我读到这篇文章时,我没有看到剧本的重点……但我们只能说我不明白。
以某种方式禁用release:perform中的默认“部署”目标
根据
release:perform
的文档,您可以使用可选的goals
参数来指定:
要在部署时执行的以空格分隔的目标列表。如果项目有
元素,则默认值为deploy
或deploy site-deploy
。<distributionManagement>/<site>
您可以使用
install
代替 deploy
。
以某种方式 make release:perform 调用 exec:exec 插件来执行 shell 脚本
将其绑定到发布期间激活的配置文件中的
install
上。这是执行此操作的一种方法:
<profile>
<!-- Profile used when the release plugin executes. -->
<id>release</id>
<activation>
<property>
<!-- This property is automatically defined by the Maven release plugin when executing
a release. Thus this profile will be automatically enabled when releasing -->
<name>performRelease</name>
<value>true</value>
</property>
</activation>
<build>
...
</build>
</profile>
但说实话,你的要求有些奇怪。也许提供更多细节会有所帮助。
如果您不想每次运行命令时都键入
-Darguments="-Dmaven.deploy.skip=true"
mvn release:perform
,您可以在里面配置跳过pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>XXX</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>