searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

maven的打包assembly,shade插件使用分析

2024-11-28 09:53:15
11
0

在使用 Maven 的 Jar Plugin 打包时,如果想在生成的 JAR 包中删除 pom.xml 中定义的依赖的内容,可以通配置 maven-jar-plugin 和 maven-dependency-plugin 来实现。这里的思路是明确打包时不包含依赖文件。下面介绍下  maven-jar-plugin和maven-dependency-plugin插件区别:

maven-jar-plugin 是 Maven 官方提供的一个插件,用于帮助项目生成 JAR 文件。JAR 文件(Java Archive)是一种用于分发 Java 类文件及相关资源的归档文件格式。通过该插件,开发者可以方便地控制 JAR 文件的打包内容、元数据生成,以及自定义 JAR 文件结构。maven-jar-plugin 通常用于 Java 项目的标准打包阶段,可以和 Maven 生命周期集成,也可以单独调用。

以下配置为项目生成一个简单的 JAR 文件:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.3.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

运行 mvn clean package,默认会生成 target/<artifactId>-<version>.jar。

maven-dependency-plugin 是 Maven 提供的一个强大的插件,主要用于管理和操作项目的依赖。它允许开发者在 Maven 构建生命周期中执行各种依赖相关的任务,例如分析、下载、复制、解压和清理依赖。这是一个通用插件,适用于所有 Maven 项目,尤其在处理依赖问题或自动化构建任务时非常有用。

以下命令将依赖的 JAR 文件或 ZIP 文件解压到指定目录:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.6.0</version>
            <executions>
                <execution>
                    <id>unpack-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>unpack</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>com.google.guava</groupId>
                                <artifactId>guava</artifactId>
                                <version>31.0-jre</version>
                                <type>jar</type>
                                <outputDirectory>${project.build.directory}/unpacked</outputDirectory>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

maven-dependency-plugin 是一个灵活的插件,适用于依赖的分析、复制、解压和清理等任务。通过结合 Maven 生命周期和其他插件,可以简化构建和部署过程,特别是在需要处理大量依赖的复杂项目中。

maven-shade-plugin 是 Maven 提供的一个强大的插件,专门用于创建 可运行的 JAR 文件(Fat JAR 或 Uber JAR),即将项目本身的代码和所有依赖打包到一个 JAR 文件中。它常用于需要一个独立运行的 JAR 包场景,例如 CLI 工具、独立服务或单机部署的 Java 程序。此外,maven-shade-plugin 还支持对依赖进行重定位(relocation)、合并资源文件(如 META-INF 中的配置文件),以避免类冲突和资源冲突。

基本配置
以下是一个最简单的配置示例,用于将项目及其依赖打包到一个 JAR 文件中:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.4.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

maven-shade-plugin 是一个功能丰富且灵活的插件,适合需要生成 Fat JAR 的场景。它的重定位和合并功能特别适合处理复杂依赖冲突和资源冲突问题。与其他插件相比,它更专注于生成单一 JAR 文件,是现代 Java 项目中非常常用的工具。

可以根据不同的打包方式选用上述的打包插件,如果需要屏蔽一些文件,可以使用一些关键字进行屏蔽

0条评论
作者已关闭评论
王晓昌
4文章数
0粉丝数
王晓昌
4 文章 | 0 粉丝
原创

maven的打包assembly,shade插件使用分析

2024-11-28 09:53:15
11
0

在使用 Maven 的 Jar Plugin 打包时,如果想在生成的 JAR 包中删除 pom.xml 中定义的依赖的内容,可以通配置 maven-jar-plugin 和 maven-dependency-plugin 来实现。这里的思路是明确打包时不包含依赖文件。下面介绍下  maven-jar-plugin和maven-dependency-plugin插件区别:

maven-jar-plugin 是 Maven 官方提供的一个插件,用于帮助项目生成 JAR 文件。JAR 文件(Java Archive)是一种用于分发 Java 类文件及相关资源的归档文件格式。通过该插件,开发者可以方便地控制 JAR 文件的打包内容、元数据生成,以及自定义 JAR 文件结构。maven-jar-plugin 通常用于 Java 项目的标准打包阶段,可以和 Maven 生命周期集成,也可以单独调用。

以下配置为项目生成一个简单的 JAR 文件:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.3.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

运行 mvn clean package,默认会生成 target/<artifactId>-<version>.jar。

maven-dependency-plugin 是 Maven 提供的一个强大的插件,主要用于管理和操作项目的依赖。它允许开发者在 Maven 构建生命周期中执行各种依赖相关的任务,例如分析、下载、复制、解压和清理依赖。这是一个通用插件,适用于所有 Maven 项目,尤其在处理依赖问题或自动化构建任务时非常有用。

以下命令将依赖的 JAR 文件或 ZIP 文件解压到指定目录:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.6.0</version>
            <executions>
                <execution>
                    <id>unpack-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>unpack</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>com.google.guava</groupId>
                                <artifactId>guava</artifactId>
                                <version>31.0-jre</version>
                                <type>jar</type>
                                <outputDirectory>${project.build.directory}/unpacked</outputDirectory>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

maven-dependency-plugin 是一个灵活的插件,适用于依赖的分析、复制、解压和清理等任务。通过结合 Maven 生命周期和其他插件,可以简化构建和部署过程,特别是在需要处理大量依赖的复杂项目中。

maven-shade-plugin 是 Maven 提供的一个强大的插件,专门用于创建 可运行的 JAR 文件(Fat JAR 或 Uber JAR),即将项目本身的代码和所有依赖打包到一个 JAR 文件中。它常用于需要一个独立运行的 JAR 包场景,例如 CLI 工具、独立服务或单机部署的 Java 程序。此外,maven-shade-plugin 还支持对依赖进行重定位(relocation)、合并资源文件(如 META-INF 中的配置文件),以避免类冲突和资源冲突。

基本配置
以下是一个最简单的配置示例,用于将项目及其依赖打包到一个 JAR 文件中:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.4.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

maven-shade-plugin 是一个功能丰富且灵活的插件,适合需要生成 Fat JAR 的场景。它的重定位和合并功能特别适合处理复杂依赖冲突和资源冲突问题。与其他插件相比,它更专注于生成单一 JAR 文件,是现代 Java 项目中非常常用的工具。

可以根据不同的打包方式选用上述的打包插件,如果需要屏蔽一些文件,可以使用一些关键字进行屏蔽

文章来自个人专栏
go
4 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0