Maven发布:无需部署和调用外部shell脚本即可执行

问题描述 投票:0回答:3

我正在使用maven发布插件。问题很简单:我不想在发布时进行部署:执行。我实际上想执行一个 shell 脚本来为我进行部署。所以我有两件事要完成:

  1. 以某种方式禁用发布中的默认“部署”目标:执行

  2. 不知何故 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>
maven-2 maven-release-plugin
3个回答
56
投票

有点晚了,但仅供参考:

对于步骤 1,您可以使用“跳过”选项禁用 Maven 部署步骤。点击这里参考。

在命令行上您可以调用类似以下内容:

mvn release:perform -Darguments="-Dmaven.deploy.skip=true"

11
投票

我正在使用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>

但说实话,你的要求有些奇怪。也许提供更多细节会有所帮助。


0
投票

如果您不想每次运行命令时都键入

-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>
© www.soinside.com 2019 - 2024. All rights reserved.