为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUWWW 2019-08-29 08:26:35
Maven模块+构建单个特定模块我有一个父项目多模块Maven项目P和三个子模块A,B和C。这两个B和C是战项目,都依赖于A。我可以输入mvn compile在P和拥有所有的子模块正确的编译的。当我想为特定模块执行操作时,问题就来了。我希望能够为项目打包一个war B,但是当我从B目录运行package命令时,它会抱怨它找不到依赖项A。我从这个问题中理解:Maven和依赖模块可能Maven并不是真的设计用于这种类型的依赖解析,但这引出了如何打包的问题B?mvn package我真的想要的时候是否必须运行整个项目层次结构B?每次要打包时,是否必须将A的快照安装到本地存储库中B?当A仍处于活跃开发阶段时,第二种情况并不是很有趣。这里有什么最佳做法?
查看完整描述

3 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

这里有什么最佳做法?

使用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


查看完整回答
反对 回复 2019-08-29
?
aluckdog

TA贡献1847条经验 获得超7个赞

Maven绝对是为这种类型的依赖而设计的。

mvn package 将不会在您的本地存储库中安装任何内容,它只是打包项目并将其保留在目标文件夹中。

不要mvn install在父项目(A),这一切的子模块将被安装在您的计算机的Maven仓库,如果没有改变,你只需要编译/包的子模块(B)和Maven将已经打包和安装的依赖项恰到好处。

mvn install如果您更新了部分代码,则只需在父项目中使用a 。


查看完整回答
反对 回复 2019-08-29
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

如果您之前在项目B 上运行过mvn install,它将已安装到您的本地存储库,因此在构建程序包时,Maven可以解析依赖项。因此,只要您在每次更改时安装项目B,项目A的构建都将是最新的。

您可以使用聚合器pom定义多模块项目以构建一组项目。

值得一提的是m2eclipse,它将Maven集成到Eclipse中,并允许您(可选)解决工作空间中的依赖关系。因此,如果您正在攻击多个项目,则工作区内容将用于编译。一旦您对更改感到满意,请运行mvn install(依次在每个项目上,或使用聚合器)将它们放在本地存储库中。


查看完整回答
反对 回复 2019-08-29
  • 3 回答
  • 0 关注
  • 828 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信