Maven模块+构建单个特定模块

Maven模块+构建单个特定模块

我有一个父项目多模块Maven项目P和三个子模块ABC。这两个BC是战项目,都依赖于A

我可以输入mvn compileP和拥有所有的子模块正确的编译的。当我想为特定模块执行操作时,问题就来了。

我希望能够为项目打包一个war B,但是当我从B目录运行package命令时,它会抱怨它找不到依赖项A

我从这个问题中理解:Maven和依赖模块可能Maven并不是真的设计用于这种类型的依赖解析,但这引出了如何打包的问题B

  1. mvn package我真的想要的时候是否必须运行整个项目层次结构B

  2. 每次要打包时,是否必须将A的快照安装到本地存储库中B

A仍处于活跃开发阶段时,第二种情况并不是很有趣。

这里有什么最佳做法?


HUWWW
浏览 842回答 3
3回答

眼眸繁星

这里有什么最佳做法?使用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所需的模块。请注意,如果引用的artifactId内容与目录名称不同,则需要使用冒号:mvn install -pl :B -am

aluckdog

Maven绝对是为这种类型的依赖而设计的。mvn package 将不会在您的本地存储库中安装任何内容,它只是打包项目并将其保留在目标文件夹中。不要mvn install在父项目(A),这一切的子模块将被安装在您的计算机的Maven仓库,如果没有改变,你只需要编译/包的子模块(B)和Maven将已经打包和安装的依赖项恰到好处。mvn install如果您更新了部分代码,则只需在父项目中使用a 。

米琪卡哇伊

如果您之前在项目B 上运行过mvn install,它将已安装到您的本地存储库,因此在构建程序包时,Maven可以解析依赖项。因此,只要您在每次更改时安装项目B,项目A的构建都将是最新的。您可以使用聚合器pom定义多模块项目以构建一组项目。值得一提的是m2eclipse,它将Maven集成到Eclipse中,并允许您(可选)解决工作空间中的依赖关系。因此,如果您正在攻击多个项目,则工作区内容将用于编译。一旦您对更改感到满意,请运行mvn install(依次在每个项目上,或使用聚合器)将它们放在本地存储库中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java