Maven 创建quarkus多模块项目的最佳实践是什么?

Maven 创建quarkus多模块项目的最佳实践是什么?,maven,quarkus,Maven,Quarkus,我想创建一个多模块quarkus项目,以下是我所做的: 通过IDEA创建一个普通的qurakus项目 右键点击项目文件夹,选择“添加模块”,添加3个子模块:“控制器”、“资源”、“包” 我希望“package”模块是一个uber jar,作为一个包含所有其他模块的可运行jar,因此我修改了每个模块的pom.xml文件: 这是根模块pom.xml: 4.0.0 io.github.jiayao3o 伊尔加谢夫 聚甲醛 1.0.0-SNAPSHOT 控制器 物件 包裹 3.8.1 真的 16 16

我想创建一个多模块quarkus项目,以下是我所做的:

  • 通过IDEA创建一个普通的qurakus项目
  • 右键点击项目文件夹,选择“添加模块”,添加3个子模块:“控制器”、“资源”、“包”
  • 我希望“package”模块是一个uber jar,作为一个包含所有其他模块的可运行jar,因此我修改了每个模块的pom.xml文件:

    这是根模块pom.xml:

    
    4.0.0
    io.github.jiayao3o
    伊尔加谢夫
    聚甲醛
    1.0.0-SNAPSHOT
    控制器
    物件
    包裹
    3.8.1
    真的
    16
    16
    UTF-8
    UTF-8
    1.13.0.1最终版本
    夸克宇宙物质清单
    夸克斯
    1.13.0.1最终版本
    3.0.0-M5
    ${quarkus.platform.group id}
    ${quarkus.platform.artifact id}
    ${quarkus.platform.version}
    聚甲醛
    进口
    夸克斯
    夸克易反应
    夸克斯
    夸克弧
    夸克斯
    quarkus-junit5
    测试
    放心吧
    放心
    测试
    org.jboss.jandex
    jandex maven插件
    1.0.8
    编制索引
    詹德克斯
    夸克斯
    quarkus maven插件
    ${quarkus plugin.version}
    真的
    建造
    生成代码
    生成代码测试
    maven编译器插件
    ${compiler plugin.version}
    maven surefire插件
    ${surefire plugin.version}
    org.jboss.logmanager.logmanager
    ${maven.home}
    本地的
    本地的
    maven故障保护插件
    ${surefire plugin.version}
    集成测试
    验证
    ${project.build.directory}/${project.build.finalName}-runner
    org.jboss.logmanager.logmanager
    ${maven.home}
    本地的
    
    这是控制器模块pom.xml:

    
    伊尔加谢夫
    io.github.jiayao3o
    1.0.0-SNAPSHOT
    4.0.0
    控制器
    16
    16
    
    这是res模块pom.xml:

    
    伊尔加谢夫
    io.github.jiayao3o
    1.0.0-SNAPSHOT
    4.0.0
    物件
    16
    16
    
    这是包模块pom.xml:

    
    伊尔加谢夫
    io.github.jiayao3o
    1.0.0-SNAPSHOT
    4.0.0
    包裹
    16
    16
    io.github.jiayao3o
    控制器
    ${project.parent.version}
    io.github.jiayao3o
    物件
    ${project.parent.version}
    
  • 最后,我将application.properties文件添加到“package”模块的resources文件夹中,添加了所需的配置
  • 最后,我在根模块中运行了mvncleanpackage,得到了package-1.0.0-SNAPSHOT-runner.jar文件,该文件工作得非常好


    所以我想问的问题是,我上面的步骤是构建多模块quarkus项目的最佳实践吗?是否有我不知道的问题?

    问题中描述的结构看起来合理。不过,我建议进行以下改进:

    • 不需要在子模块中重复
      maven.compiler.source
      maven.compiler.target
      属性,它们是从
      继承的
    • 无需在所有模块中运行
      quarkus maven插件
      ,将其移动到
      模块
    • 这同样适用于配置文件
      本机

    保持为所有模块配置的
    jandex maven插件
    ,如中所述。

    当我将jandex maven插件添加到根模块时,它将在所有子模块中继承,对吗?maven模块从声明的
    父模块继承
    项目/构建/插件
    ,这是此结构中的根模块。