我有一个多模块的web项目。该项目的四个模块打包为jar,并作为依赖项添加到第五个模块,该模块打包为war。当部署应用程序时,我只需在war项目上运行package,并使用所有依赖项创建war。
现在有一个问题。
我的模块之一有很大的变化。现在当我为我的项目创建战争时,这些更改没有反映在输出war文件中(战争的lib文件夹中的jar仍然是旧代码)。
您能否指出我在发布过程中遗漏的内容?为什么旧代码与战争打包在一起?
您能否使用maven为实际文件构建过程指出一些好的资源?
此致 维杰
答案 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