【问题标题】:Ensure that exec-maven-plugin is downloaded during the compile phase确保在编译阶段下载了 exec-maven-plugin
【发布时间】:2012-09-07 10:38:07
【问题描述】:

我们有一个 maven 项目,我们在其中使用几个 linux bash 脚本来为我们的 java 应用程序提供各种条目。我们已经通过 exec-maven-plugin 解决了这个问题,所以脚本通常看起来像:mvn -e -o -q exec:exec -Dexec.executable="java" -Dexec.args="..."。出于某种原因,我们被限制使用脱机标志 (-o)。

我的问题是:如何确保在编译阶段下载了 exec-maven-plugin?存在开发人员没有下载 exec-maven-plugin 的风险,并且由于 exec-maven-plugin 与 maven 脱机标志一起使用,如果它不存在则不会被下载。

【问题讨论】:

  • 我想控制什么时候下载东西。我认为我们决定使用离线标志的原因是运行我们的应用程序时由于更新检查导致的烦人延迟(结合不良的互联网连接)。我们可以在编译阶段忍受恼人的延迟,但在运行应用程序时却不行。
  • 您是否可以考虑仅指定 Intranet 存储库并将您的所有东西都放在那里?这是一个专家的最佳实践,你不会有互联网的滞后。假设您的 Intranet 工作正常。
  • 其实我们有这样一个内网仓库,只要我们在办公室这不是问题。
  • 那么,如果开发人员(在办公室时)会做mvn dependency:go-offline,下载所需的插件和依赖项,然后在不在办公室时使用离线标志,这是否合理?
  • 我不确定它对我有什么帮助。由于 exec-maven-plugin 没有在 pom 中指定,并且只被脚本使用,dependency:go-offline 不会下载 exec-maven-plugin。目前,我们输入mvn exec:help 来下载它,但我希望系统开箱即用,即我希望mvn compile 就足够了。

标签: maven exec-maven-plugin


【解决方案1】:

感谢@eis 的 cmets,我设法解决了这个问题。 pom 现在看起来像这样:

<properties>
  <additionalJavaArgs></additionalJavaArgs>
</properties>
...
<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>exec-maven-plugin</artifactId>
      <version>1.2.1</version>
      <configuration>
        <executable>java</executable>
        <commandlineArgs>
          -XX:+PrintCommandLineFlags -showversion -classpath %classpath ${additionalJavaArgs}
        </commandlineArgs>
      </configuration>
    </plugin>
  </plugins>
</build>

bash 脚本如下所示:

ADDITIONAL_JAVA_ARGS=$*
mvn -e -o -q exec:exec -DadditionalJavaArgs="$ADDITIONAL_JAVA_ARGS"

这样,脚本的用户可以添加一个主类,后跟无限数量的应用程序参数。

【讨论】:

    猜你喜欢
    • 2012-11-16
    • 2018-07-09
    • 2012-03-03
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 2014-11-14
    • 2018-03-14
    • 2012-04-08
    相关资源
    最近更新 更多