【问题标题】:Build Issue with multi module project多模块项目的构建问题
【发布时间】:2011-02-06 10:30:19
【问题描述】:

我有一个多模块网络项目。项目的四个模块打包为jar,作为依赖添加到第五个模块,打包为war。当需要部署应用程序时,我只是在 war 项目上运行包,我的 war 是使用所有依赖项创建的。

现在有一个问题。

其中一个我的模块有很大的变化。现在,当我为我的项目创建战争时,这些更改并未反映在输出战争文件中(战争的 lib 文件夹中的 jar 仍然有旧代码)。

您能指出我在发布过程中缺少的东西吗?为什么老代码要和war一起打包?

您能否为使用 maven 的真实文件构建过程指出一些好的资源?

问候, 维杰

【问题讨论】:

    标签: maven-2 build-process


    【解决方案1】:

    当需要部署应用程序时,我只是在 war 项目上运行包,我的 war 是使用所有依赖项创建的。 (...) 我的模块之一有很大的变化。现在,当我为我的项目创建 war 时,这些更改并没有反映在输出的 war 文件中(war 的 lib 文件夹中的 jar 仍然有旧代码)。

    您需要运行“反应器构建”,即通过从聚合父级启动它来在所有模块上运行 maven。假设您有以下结构:

    父母 |-- 模块1 | `-- pom.xml |-- 模块2 | `-- pom.xml |-- 模块3 | `-- pom.xml |-- 模块4 | `-- pom.xml |-- 网络应用 | `-- pom.xml `-- pom.xml

    假设您在父级的 pom 中定义了<modules>:

    <modules>
      <module>module1</module>
      <module>module2</module>
      <module>module3</module>
      <module>module4</module>
      <module>webapp</module>
    </modules>
    

    只需从父目录运行package:

    cd parent
    mvn package
    

    Maven 将读取所有&lt;modules&gt; 并根据依赖关系以正确的顺序构建它们。

    查看Maven Tips and Tricks: Advanced Reactor Options,了解反应堆构建和更高级选项的说明。例如,您可以像这样调用 maven 来构建 webapp 模块及其依赖项(但只有它的依赖项,而不是所有模块):

    mvn -am -pl webapp
    

    【讨论】:

    • 感谢帕斯卡。我已经尝试过了,发现它有效。谢谢它解决了我的问题。
    • 他不需要运行 mvn install 而不是 mvn package 吗?否则,当 web 模块解决其依赖关系时,它可能会从本地存储库中获取模块 1-4 的陈旧版本,而不是新构建的版本;见stackoverflow.com/questions/4150180/…
    猜你喜欢
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 2017-10-09
    • 2020-10-02
    • 1970-01-01
    • 2012-06-23
    相关资源
    最近更新 更多