使用多模块项目构建问题

时间:2010-04-10 06:34:27

标签: maven-2 build-process

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

现在有一个问题。

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

您能否指出我在发布过程中遗漏的内容?为什么旧代码与战争打包在一起?

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

此致 维杰

1 个答案:

答案 0 :(得分:2)

  

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

您需要运行“reactor build”,即通过从聚合父级启动maven来对所有模块运行maven。假设您有以下结构:

parent
|-- module1
|   `-- pom.xml
|-- module2
|   `-- pom.xml
|-- module3
|   `-- pom.xml
|-- module4
|   `-- pom.xml
|-- webapp
|   `-- 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将读取所有<modules>并根据依赖关系以正确的顺序构建它们。

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

mvn -am -pl webapp