Maven模块+构建单一特定模块
我有一个带有父项目P
和三个子模块A
, B
和C
的多模块Maven项目。 B
和C
都是战争项目,都依赖于A
我可以在P
键入mvn compile
并让所有子模块正确编译。 当我想要为特定模块执行操作时会出现问题。
我希望能够为项目B
打包一场战争,但是当我从B
的目录运行包命令时,它抱怨它无法找到A
的依赖关系。
我从这个问题可以理解:Maven和依赖模块,也许Maven并不是真正为这种类型的依赖解决而设计的,但是这引出了我如何打包B
?
当我真的想要B
时,是否必须为整个项目层次结构运行mvn package
?
每次我想打包B
时,是否必须将A的快照安装到本地存储库中?
当A
仍处于积极的发展阶段时,第二种情况并不是很有趣。
这里有什么最佳实践?
这里有什么最佳实践?
使用Maven高级反应堆选项,更具体地说:
-pl, --projects
Build specified reactor projects instead of all projects
-am, --also-make
If project list is specified, also build projects required by the list
因此,只要cd
到父P目录并运行:
mvn install -pl B -am
这将构建B和B所需的模块。
Maven绝对是为这种依赖而设计的。
mvn package
不会在本地存储库中安装任何东西,它只是将项目打包并将其保留在目标文件夹中。
如果没有你需要编译/打包子模块(B)的变化,Maven将把mvn install
在父项目(A)中,这样所有的子模块都将安装在你的计算机的Maven仓库中已经打包并安装了依赖关系。
如果你更新了代码的一部分,你只需要在父项目中mvn install
。
如果您以前在项目B上运行过mvn install ,它将被安装到您的本地存储库,因此当您构建包时Maven可以解析依赖关系。 因此,只要您每次更改项目B时安装项目B,项目A的构建都将保持最新。
您可以使用聚合器pom定义一个多模块项目来构建一组项目。
值得一提的是m2eclipse,它将Maven集成到Eclipse中,并允许您(可选)解析工作区中的依赖关系。 因此,如果您正在攻击多个项目,则工作区内容将用于编译。 一旦您满意您的更改,请运行mvn install(依次在每个项目上或使用聚合器)将其放入本地存储库。
链接地址: http://www.djcxy.com/p/29675.html上一篇: Maven Modules + Building a Single Specific Module
下一篇: Correct way to add external jars (lib/*.jar) to an IntelliJ IDEA project