Maven,在战争即将建立之前运行一个java方法或脚本

Posted

技术标签:

【中文标题】Maven,在战争即将建立之前运行一个java方法或脚本【英文标题】:Maven, run a java method or script before war is about to be built 【发布时间】:2014-08-17 19:14:48 【问题描述】:

我正在考虑使用模板引擎来生成 web.xml 和其他东西。

有没有办法在 ma​​ven install 命令之前运行 java 文件或脚本?或者在战争产生之前。

我不确定该阶段应该是什么,但基本上在其他人之前查看 web.xml,以便我可以触摸它以 制作一个新的有效

【问题讨论】:

【参考方案1】:

您可以使用exec-maven-plugin 运行程序/脚本(使用exec goal)或Java 程序(使用java goal)。

package 之前的阶段是prepare-package(请参阅Lifecycle Reference 中的默认生命周期),因此您可以使用它。但您可能更愿意在生命周期的早期生成 web.xml(甚至早于 generate-resources)。

把这些放在一起,你可能会尝试这样的事情:

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.3.2</version>
    <executions>
      <execution>
        <phase>prepare-package</phase>
        <goals>
          <goal>exec</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <executable>your_packaging_script</executable>
      <!-- optional -->
      <workingDirectory>/tmp</workingDirectory>
      <arguments>
        <argument>--some-option</argument>
      </arguments>
    </configuration>
  </plugin>

或者,您可以考虑writing your own plugin,尤其是当您认为该想法对多个项目有用时。

【讨论】:

有没有办法在配置文件激活时运行插件而不在项目 pom.xml 中提及它? 中似乎没有 部分。

以上是关于Maven,在战争即将建立之前运行一个java方法或脚本的主要内容,如果未能解决你的问题,请参考以下文章

如何使用由 Maven 坐标定义的战争来运行 jetty:run-war?

Intellij Idea 建立maven项目 报错 :java: 错误: 不支持发行版本 5

如何使用 maven 中的 tomcat 插件部署多个战争?

java.net.socketexception 连接重置由对等套接字写入错误通过 Jenkins 在 Tomcat7 上部署战争时(使用 Maven)

Eclipse 项目中缺少 Maven 依赖项

在没有 maven 的情况下启动码头的可执行战争文件