具有多个模块和多个程序集的 Maven 项目

Maven project with multiple module and multiple assembly

我在尝试构建具有多个模块的 Maven 项目时遇到困难,并且每个模块都有自己的程序集。

一开始我不太确定这是否可以在 maven 中完成。

我的项目结构如下:

project
 +- root
 |  +- pom.xml
 +- module-common
 |  +- pom.xml
 |  +- src 
 |  |  +- main
 |  |  |  +- java
 |  |  +- test
 |  |     +- java
 |  +- target  
 + module-client
 |  +- pom.xml
 |  +- src
 |  |  +- main
 |  |     +- java
 |  |     +- assembly
 |  |     +- scripts
 |  |     +- resources
 |  |  +- test
 |  |     +- java
 |  +- target
 + module-server
    +- src
    |  +- main
    |  |  +- java
    |  |  +- assembly
    |  |  +- scripts
    |  |  +- resources
    |  +- test
    |     +- java
    +- target

解释结构的几个关键点

我可以 assemble 通过发出 3 次 maven 程序集来正确地完成项目

mvn clean package                 (on the root)
mvn clean package assembly:single (on the client)
mvn clean package assembly:single (on the server)

我正在尝试找到一种可以直接调用的方法

mvn clean package

在根模块上,将调用两个程序集(在客户端和服务器中),每个程序集将 运行 根据其自己的程序集描述符

我不能在两个模块上对 运行 使用相同的程序集描述符,因为它们 assembled 不同。

客户端是assembled,"resource"打包在主jar文件里,外面只有脚本

服务器是 assembled,"resource" 从主 jar 文件中打包出来。

在你的根 pom.xml 中添加:

<modules>
    <module>module-common</module>
    <module>module-client</module>
    <module>module-server</module>
</modules>

并使用此文件夹结构:

project
 +- root
    +- pom.xml
    +- module-common
    |  +- pom.xml
    |  +- src 
    |  |  +- main
    |  |  |  +- java
    |  |  +- test
    |  |     +- java
    |  +- target  
    + module-client
    |  +- pom.xml
    |  +- src
    |  |  +- assembly
    |  |  +- main
    |  |     +- java
    |  |     +- scripts
    |  |     +- resources
    |  |  +- test
    |  |     +- java
    |  +- target
    + module-server
       +- src
       |  +- assembly
       |  +- main
       |  |  +- java
       |  |  +- scripts
       |  |  +- resources
       |  +- test
       |     +- java
       +- target