3 回答

TA贡献1876条经验 获得超6个赞
如果您在相应的 POM 中定义依赖项并构建整个项目(在根级别),那么 Maven 会自动按拓扑对模块进行排序,这意味着每个模块构建一次,并且一切都按正确的顺序完成。

TA贡献1820条经验 获得超10个赞
我现在使用一个父项目,它定义了maven版本、公共依赖项和公共插件配置。
父项目还在module
-tags 中定义了它的子模块。
每个子模块都引用该父项目并使用相同的版本。
为了构建应用程序,我在父项目中运行 Maven,使用-pl
和标志。 该标志告诉 Maven 仅构建列出的模块,而不是构建整个项目。 该标志告诉 Maven 还构建所需的依赖项。 示例: 给定以下结构:-pl
-am
parent
---- lib1
---- lib1A (depends on lib1)
---- lib1B (depends on lib1)
---- lib2 (depends on lib1B)
---- lib2A (depends on lib2)
---- lib2B (depends on lib2)
---- app1A (depends on lib1A)
---- app2A (depends on lib2A)
---- app2B (depends on lib2B)
执行将构建除和mvn clean install -pl app1A,app2A -am之外的所有模块。 此外, module被使用且仅被构建一次。 app2Blib2B
lib1app1Aapp2A
通常,您希望独立地对每个模块进行版本控制,但在我们的例子中,这将带来巨大的工作量,因为我们有很多模块构建在彼此之上。“最低”模块(lib1在示例中)的微小变化将导致几乎每个模块的变化。
因此,在这种情况下,我们需要增加每个版本号并更新所有模块中所有引用的依赖项。
相反,我们决定始终重建所有依赖项,从而生成始终最新的 Jar。这就是为什么我们只管理父项目中的maven版本。

TA贡献1804条经验 获得超3个赞
我认为使用 Maven 多模块,您只需导航到要构建的模块,然后从那里运行 Maven 命令。Maven 将自动构建具有关联依赖项的模块,而不会构建不必要的模块。
添加回答
举报