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

我有一个带有父项目P和三个子模块ABC的多模块Maven项目。 BC都是战争项目,都依赖于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