Maven 优化项目打包-依赖版本管理

一、依赖版本管理

使用Maven时,实际开发的项目一般来讲都是 聚合项目,不同的模块使用不同的依赖,进行依赖版本管理就势在必行,不然依赖冲突的话会很难受。

什么是聚合项目?

<packaging>pom</packaging> 说明你的 Maven 项目是一个聚合项目(Aggregator Project)或者父项目(Parent Project)。

如何统一版本?

在父项目中的 pom.xml 中使用 dependencyManagement 统一管理依赖版本,例如:

   <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.github.xiaoymin</groupId>
                <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
                <version>${knife4j.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

至此子项目的依赖就不需要填写 version

二、依赖包打包优化(依赖独立于应用)

一般来讲依赖不会经常变化,所以将 依赖 打包到应用外是个好主意,可以有效的减小应用包。

如何做?

  1. 使用插件将依赖打包到 \lib 目录下,并且保证生产环境在应用同级目录创建lib目录,将需要的依赖放到lib下。

Maven 插件,如下:

<!--           打包时将依赖 jar 放到 lib目录下-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.2.0</version> <!-- 替换为你需要的版本号 -->
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <!-- 指定依赖项的输出目录 -->
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <!-- 排除不需要的依赖项 -->
<!--                            <excludeArtifactIds>unwanted-artifact</excludeArtifactIds>-->
                        </configuration>
                    </execution>
                </executions>
            </plugin>
<!--        打包时,应用jar包内不包括依赖jar-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <!--     这里配置你的启动类  -->
                            <mainClass>your.main.Class</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

打包的效果,可以参考下:

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值