使用 Maven2 将多模块项目构建到单个 jar 中

Posted

技术标签:

【中文标题】使用 Maven2 将多模块项目构建到单个 jar 中【英文标题】:Build multi-module project into a single jar with Maven2 【发布时间】:2015-03-24 10:59:50 【问题描述】:

我读过这个: maven: multi-module project assembly into single jar

对于该问题的公认答案,我的 maven 版本是 2.2.1,shade 需要 maven 3。

我的父 pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>myGroup</groupId>
    <artifactId>x-all</artifactId>
    <packaging>pom</packaging>
    <version>1.0.0</version>

    <modules>
        <module>x-framework</module>
        <module>x-adaptor</module>
        <module>x-plugin</module>
        <module>x-utils</module>
        <module>x-offline</module>
        <module>x-protocols</module>
    </modules>
...

我只想构建一个包含

x-all-1.0.0-jar-with-dependencies.jar
    每个子模块类 每个子模块依赖类(需要自动解决依赖冲突) 一些资源文件(在x-all/src/main/resources

我该如何构建它?

【问题讨论】:

@khmarbaise 我和我的队友尝试构建它至少 3 小时...尝试了数十种解决方案.. 您使用 maven 2.2 的原因是什么?不能升级到maven3吗? 【参考方案1】:

添加另一个模块,例如,将其命名为x-package。让x-package 依赖于该项目中的每个模块。而我们只需运行mvn package 和一个简单的assembly plugin 配置(jar-with-dependence),我们就会在x-package 的目标目录中得到想要的jar。

【讨论】:

以上是关于使用 Maven2 将多模块项目构建到单个 jar 中的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 Maven2 发布到 Artifactory?

maven2 多项目构建中缺少 aar 文件

如何在 Maven2 模块之间共享过滤器文件?

maven结合的初步项目模块构建

Maven单独构建多模块项目中的单个模块

Maven单独构建多模块项目中的单个模块