【问题标题】:strategy for maven ear packaging, building dependant projectsmaven ear 打包策略,构建依赖项目
【发布时间】:2012-09-19 06:51:22
【问题描述】:

看了各种建议后,我似乎仍然无法对ear文件有任何成功的maven策略。

我有这个结构:

父 pom.xml: ...

  <modules>
        <module>MyProject-ear</module>
        <module>MyProject-ejb</module>
        <module>MyProject-war</module>
  </modules>

(ejb/war/ear 将此作为父级)

我正在使用 maven-war-plugin / maven-ejb-plugin / maven-ear-plugin。

EAR 模块具有 ejb/war 项目作为依赖项。

现在,如果我想建立自己的耳朵,我需要先建立战争。如果我没有,那只是不是最新版本。

有没有更好的办法?

编辑:仅供参考,打开一个 netbeans 错误,只需单击“运行”即可获得运行我的项目的有效解决方案:http://netbeans.org/bugzilla/show_bug.cgi?id=218807

【问题讨论】:

  • 模块顺序不正确。将 war 模块放在顶部,使其在 ear 模块之前构建,ear 模块应该是列表中的最后一个。如果你然后建立你的父母,耳朵文件将是正确的。如果您只构建 ear 模块,您将遇到不是最新的 .war 依赖项的问题
  • @wemu 模块的顺序只有在没有其他方法确定构建顺序时才相关。在他的示例中,耳朵依赖于战争,这将导致正确的构建顺序。 maven.apache.org/guides/mini/guide-multiple-modules.html
  • 我不这么认为。 ear 模块将看到一个依赖项并尝试在本地存储库中解析它,然后在远程存储库中。依赖项不会告诉模块是在哪里构建的。如果有一个 CI 构建可以确保 .war 是最新的,那不会是一个问题,但我不会颠倒模块构建顺序。我经常看到这种行为,以至于无法相信链接状态是完全正确的。安全总比后悔好:)
  • @wemu 看起来很合理,我会检查一下
  • 在这里似乎没有帮助。不过,也许它会修复我的自动构建中的某些问题(我认为我曾经必须构建两次才能正常工作)。

标签: java maven ear maven-war-plugin maven-ear-plugin


【解决方案1】:

看起来不错。我自己使用相同的布局。

构建时,您只需位于顶部 pom 并运行mvn install。您不必先向下层级构建war

【讨论】:

  • 在 Netbeans 中,为了运行项目,我选择了 EAR 模块并运行它。为了确保它是最新的,我总是必须先建立战争(或父母),我不喜欢那样。 Netbeans 让我选择 ear 模块是错误的,在这种情况下我会提交一个错误。或者@wemu关于声明顺序的评论是对的,我可以很容易地纠正它。
  • @ymajoros 以下是 maven reactor 构建的精彩总结:sonatype.com/people/2009/10/…
  • 好的,但我希望能够在我的 ear 项目中点击 Netbeans 中的“运行”并让它工作,而无需之前构建父 pom。这不可能吗?
猜你喜欢
  • 1970-01-01
  • 2020-05-08
  • 1970-01-01
  • 2012-08-20
  • 2014-02-18
  • 2023-03-13
  • 2017-06-02
  • 2016-06-27
  • 1970-01-01
相关资源
最近更新 更多