`
SSailYang
  • 浏览: 312669 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在构建单一 Jar 包时,Maven Assembly 和 Shade 插件的不同之处

 
阅读更多
Maven Assembly Plugin 和 Shade Plugin 都可以用来在构建单一 Jar 包时,将所有 Dependency 打入这个最终生成的 Jar 中去。但是两者在具体的行为上有所不同:Assembly 插件不仅会将 Dependency 中的 Class 文件打入最终的 Jar 包,还会将 Dependency 中的资源文件,诸如 properties 文件打入最终的 Jar 包。当项目和其 Dependency 中有同名的资源文件是,就会发生冲突,项目中的同名文件便不会加入到最终的 Jar 包中。如果这个文件是一个关键的配置文件,便会导致问题。而 Shade Plugin 不存在这样的问题。

下面列出 Assembly 和 Shade Plugin 的使用方法:

Assembly:
<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <mainClass>your.main.class</mainClass>
            </manifest>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
    <executions>
        <execution>
            <id>make-my-jar-with-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
             </goals>
        </execution>
    </executions>
</plugin>


Shade:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.7.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>com.alcatel.ias.im.msrp.io.Main</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>
分享到:
评论

相关推荐

    maven-shade-plugin-3.1.0.jar

    maven打包,指定入口类的jar包,具体的pom配置为: &lt;groupId&gt;org.apache.maven.plugins &lt;artifactId&gt;maven-shade-plugin &lt;version&gt;3.1.0 &lt;phase&gt;package &lt;goal&gt;shade implementation="org....

    Maven将带有第三方依赖的可执行程序打包示例

    maven-assembly-plugin 插件打第三方依赖包进 jar,spring 有 org.springframework.beans.factory.parsing.BeanDefinitionParsingException 异常怎么办? maven-shade-plugin 插件打第三方依赖包,spring 有 java....

    springboot+maven打包demo【将依赖与配置文件打包到jar包外部】

    在本文中,我们将深入探讨如何使用Spring Boot和Maven来构建一个项目,使得依赖和配置文件被打包到jar包外部,以实现更加灵活的项目管理。这个方法对于那些需要根据不同环境进行定制配置或者频繁更新配置的应用来说...

    Maven 生成打包可执行jar包的方法步骤

    Maven提供了多种打包插件,如maven-jar-plugin(默认的JAR打包插件)、maven-shade-plugin(用于生成可执行的fat JAR)和maven-assembly-plugin(支持自定义打包)。在这个场景中,我们将使用maven-jar-plugin和...

    maven打可执行JAR包

    1. **配置插件**:同样地,在`pom.xml`文件中,需要添加`maven-jar-plugin`和`maven-dependency-plugin`两个插件。`maven-jar-plugin`负责创建JAR,而`maven-dependency-plugin`则用于复制依赖到指定目录。 ```xml ...

    fat-Jar打包插件

    【fat-Jar打包插件】是一种在Java开发中常用的工具,它的主要作用是将一个项目的所有依赖库(包括第三方jar包)与源代码一起打包成一个独立的jar文件,因此被称为"fat"或"uber"jar。这个插件极大地简化了项目的部署...

    fat jar打包插件

    Fat jar打包的主要目标是解决Java的类路径问题,尤其是在使用Maven或Gradle等构建工具时,依赖管理变得复杂。通过将所有依赖库嵌入到一个单一的JAR文件中,可以避免运行时因找不到类或资源而引发的错误。 实现fat ...

    maven插件压缩包

    在搭建Zookeeper和Kafka时,Maven插件可以帮助开发者自动化构建过程。例如,可以使用`maven-assembly-plugin`将所有依赖项打包成单一的可执行JAR,方便部署到生产环境。对于Zookeeper,可能还需要使用`maven-antrun-...

    用Maven打成可执行jar,包含maven依赖,本地依赖的操作

    Maven 打包可执行 jar 并包含 Maven 依赖和本地依赖 Maven 是一个流行的项目管理工具,它提供了强大的依赖管理和打包功能。在实际开发中,我们经常需要将 Maven 项目打包成可执行的 jar 文件,并包含 Maven 依赖和...

    ​实现maven项目中多版本依赖兼容使用解决方案

    这可以通过Maven的`maven-assembly-plugin`或`maven-shade-plugin`来实现,这两个插件可以将所有依赖打包成单个jar,或者创建一个包含所有依赖的“fat jar”。 对于`maven-assembly-plugin`,配置如下: ```xml ...

    Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包

    本篇文章将深入探讨Maven仓库的概念,介绍如何引入本地包,并详细讲解使用Maven创建可执行jar包的不同方法。 **一、Maven仓库理解** Maven仓库是Maven用来存储和检索项目依赖的地方。它分为本地仓库、远程仓库和...

    Maven3种打包方式中maven-assembly-plugin的使用详解

    Maven 提供了多种打包方式,包括 maven-jar-plugin、maven-shade-plugin 和 maven-assembly-plugin 等。每种方式都有其特点和应用场景。maven-jar-plugin 是默认的打包插件,用来打普通的 project JAR 包;maven-...

    将多个jar包合并为一个jar包

    - Maven中,可以利用`maven-assembly-plugin`或`shade-plugin`来完成合并,这两个插件能更好地处理依赖的排除、重命名和MANIFEST.MF的合并。 3. **第三方工具**: - 使用如`FatJar`、`One-Jar`这样的工具,它们...

    maven jar包

    如果项目依赖的库也需要包含在JAR中,可以使用`maven-assembly-plugin`或`shade-plugin`创建一个包含所有依赖的单一JAR。 ### 打包问题与解决方案 1. **依赖冲突** 当不同库中有相同类时,Maven可能会遇到版本...

    MAVEN打可运行jar包

    此外,还需要添加必要的构建插件,特别是`maven-jar-plugin`和`maven-assembly-plugin`或`maven-shade-plugin`,它们可以帮助我们创建可运行的jar。 1. 使用`maven-jar-plugin`: 在`&lt;build&gt;&lt;plugins&gt;`节点下添加...

    打包第三方Jar插件

    确保第三方jar包在构建路径中,才能在编译和运行时正确引用其类和方法。 3. **Eclipse与MyEclipse的类加载机制** - Eclipse和MyEclipse使用OSGi(Open Services Gateway Initiative)框架来管理插件和类加载。OSGi...

    maven plugin打包下载

    当你在`pom.xml`中指定插件及其版本后,Maven会在构建时自动从仓库下载。默认仓库地址为https://repo1.maven.org/maven2/。如果需要私有仓库,可以在`settings.xml`中配置。 五、Maven Plugin的插件集(Plugin ...

    springboot 多项目打包 jar包教程,包含源代码

    在Spring Boot应用开发中,有时候我们需要将多个独立的Spring Boot项目合并到一个单一的jar包中,以便于管理和部署。这个过程通常被称为多项目打包。本文将深入探讨如何实现Spring Boot多项目打包,并提供相关源代码...

    Fatjar打包第三方包

    此外,随着Java世界的发展,现代的构建工具如Maven和Gradle也提供了类似的功能,比如Maven的`assembly`或`shade`插件,以及Gradle的`shadow`插件,它们同样可以生成包含所有依赖的单一JAR文件。虽然这些工具可能需要...

    打包插件fatjar

    - 通过插件提供的构建配置,如在Maven中使用`maven-assembly-plugin`或`maven-shade-plugin`,指定打包方式为fat jar。 - 执行构建命令,例如Maven的`mvn package`,将会生成包含所有依赖的fat JAR文件。 4. **...

Global site tag (gtag.js) - Google Analytics