java - 如何在maven中管理多应用程序项目?

标签 java maven module

我目前正在尝试将多应用项目从 Ant 迁移到 Maven
目前该项目由多个包组成,创建某种依赖关系树,没有循环依赖关系。该树的叶子是“应用程序”包,包含 Main。中间节点是“库”包,由其他库“包”或“应用程序”包使用。
允许节点“一起生长”为单个节点或叶。 我发现,这些包可能应该被分组到 Maven 模块中,我现在有一个与此类似的结构:

root
    - lib1
    - lib1A (depends on lib1)
    - lib1B (depends on lib1)
    - app1A (depends on lib1A)
    - lib2  (depends on lib1B)
    - lib2A (depends on lib2)
    - lib2B (depends on lib2)
    - app2  (depends on lib2A and lib2B)
    - lib3  (depends on lib2A and lib2B)
    - app3A (depends on lib3)
    - app3B (depends on lib3)

基本上,一个库和一个应用程序可以依赖一个或多个其他库。
现在我希望能够单独构建每个应用程序并为其创建一个可执行的 jar。
我现在尝试的方法如下:

  • 配置每个 apppom.xml 以使用 maven-assemble-plugin 创建可执行 jar。
  • 为特定应用构建每个所需的模块。
  • 构建应用程序模块,生成可执行 jar。

因此,app2 的构建将构建 lib1lib1Alib1Blib2lib2Alib2B 以及最后的 app2
然而,为了自动化构建,我需要为每个应用程序创建一个构建脚本,它负责构建所有需要的依赖项,而 maven 应该已经自己完成了。
另外,如果我想一次构建多个应用程序,我需要多次构建所有库,或者自己跟踪已经构建的模块。
由于我是 Maven 新手,我不确定这是否是管理此类多应用程序项目的正确方法。
因此,我寻求一些有关如何正确管理此用例的建议。

编辑:
为了澄清我希望能够做什么:

  • 使用其依赖项构建单个应用程序, 无需构建所有应用程序(在父 pom 上运行 Maven)。
  • 使用其依赖项构建多个应用(不是全部),而无需多次构建依赖项。

最佳答案

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

关于java - 如何在maven中管理多应用程序项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58318251/

相关文章:

ruby - 如何列出 Ruby 类中包含的模块?

python - 为什么在 google colab 中找不到模块?

java - 如何在 JSPX 中处理 Optionals?

java - JVM 使用哪个根目录来解析相对 URL?

java - 使用 Java 捕获命令行输出

git - 从构建管道推送到本地 Azure DevOps Git

java - 浏览器上的 Spring Boot 空白页面响应

java - 默认的 Swing 外观在所有平台上都一样吗?

java - 有没有办法处理 JAXB 中多个 .xsd 文件中的重复元素定义?

node.js - 在 "request"中调用模块的本地函数作为回调