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

时间:2015-06-11 14:51:12

标签: java maven maven-assembly-plugin multi-module

我在尝试使用多个模块构建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

解释结构的几个关键点

  • 我正在尝试创建远程处理应用程序,因此服务器和客户端组件

  • root是所有模块的父级,它是一个pom包装

  • 公共类将在公共模块中

  • 服务器和客户端模块都将依赖于常见的

我可以通过发布maven程序集3次正确组装项目

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

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

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

客户端与主jar文件中打包的“资源”组合在一起,只有

之外的脚本

服务器与主jar文件打包的“资源”组装在一起。

1 个答案:

答案 0 :(得分:3)

在你的root 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