【问题标题】:Running a task post maven install运行任务发布 Maven 安装
【发布时间】:2010-01-05 09:48:21
【问题描述】:

我想在 maven 安装阶段运行一个简单的 exec 命令。实现这一目标的最简单方法是什么? (不添加新插件)

【问题讨论】:

    标签: maven-2 maven


    【解决方案1】:

    如果您想将此命令作为正常构建生命周期的一部分运行,除了在install 阶段绑定exec 目标之外别无他法:

    <build>
      <plugins>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>1.1.1</version>
          <executions>
            <execution>
              <id>my-exec</id>
              <phase>install</phase>
              <goals>
                <goal>exec</goal>
              </goals>
              <inherited>false</inherited>
            </execution>
          </executions>
          <configuration>
            <executable>COMMAND</executable>
          </configuration>
        </plugin>
      </plugins>
    </build>
    

    我使用上面的配置(使用ls 作为“命令”)和一个新创建的 maven 项目进行了一个简单的测试,运行mvn install 会产生以下输出:

    $ mvn安装 [INFO] 正在扫描项目... [信息] --------------------------------------------- ------------------------- [INFO] 构建 maven-exec-testcase [INFO] 任务段:[安装] [信息] --------------------------------------------- ------------------------- ... [信息] [安装:安装{执行:默认安装}] [信息] 安装 /home/pascal/Projects/maven-exec-testcase/target/maven-exec-testcase-1.0-SNAPSHOT.jar 到 /home/pascal/.m2/repository/com/mycompany/app/maven-exec -testcase/1.0-SNAPSHOT/maven-exec-testcase-1.0-SNAPSHOT.jar [信息] [执行:执行{执行:我的执行}] [信息] pom.xml [信息]源 [信息] 目标 [信息] --------------------------------------------- ------------------------- [信息] 构建成功 [信息] --------------------------------------------- ------------------------- [INFO] 总时间:12 秒 [INFO] 完成时间:2010 年 1 月 5 日星期二 19:26:04 CET [INFO] 最终内存:11M/75M [信息] --------------------------------------------- -------------------------

    如我们所见,该命令在install 阶段的末尾执行(在工件复制到本地存储库之后)。

    如果您真的不想将 sn-p 添加到您的 pom 中,那么您必须按照whaley 的建议在命令行上的install 之后显式调用exec:exec

    【讨论】:

      【解决方案2】:

      maven 默认生命周期以 installdeploy 目标结束 - 这些目标没有前后版本。

      可能的选择是:

      • 将 exec:exec mojo 绑定到部署阶段。我会警告您不要使用这种想法,因为部署阶段实际上是要将工件部署到远程 maven 存储库。

      • 在您的 mvn 调用中安装目标之后运行 exec:exec mojo...例如:

        mvn clean install exec:exec -Dexec.executable="yourcommand" -Dexec.args="arguments"

      • 如果您有一个多模块项目,请在 末尾创建另一个模块,并将 exec:exec 绑定到该模块中的任何常用目标。假设其他criteria the reactor looks at 不满足,这将强制此特定模块最后运行。我在从事的 Maven 项目中采用的一个常见策略是“当有疑问时,创建另一个模块”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-19
        • 2012-11-10
        • 1970-01-01
        • 1970-01-01
        • 2011-03-31
        • 2016-12-29
        • 2016-03-18
        • 2016-09-18
        相关资源
        最近更新 更多