900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > maven编译jar包时打一个瘦包 依赖包和配置文件到jar包外面

maven编译jar包时打一个瘦包 依赖包和配置文件到jar包外面

时间:2022-04-17 17:00:25

相关推荐

maven编译jar包时打一个瘦包 依赖包和配置文件到jar包外面

背景

打的jar包很大

很多时候我们在开发的时候,maven的依赖包非常多,导致我们最后打的一个jar包有一百多MB,需要将包上传到liunx环境耗时非常久,很多时候我们并没有改变依赖包,而只是改变我们的逻辑代码,结果重新上传包的时候,这些依赖包需要重新上传一次,费时费力。

抽取配置文件

有时候我们将jar包上传linux环境,发现jar包依赖的配置文件(例如:application.yml)需要修改,最不好的一种方式是线下idea重新修改配置,重新打包上传,折中的一种方式是直接 vim jar包,找到配置文件,修改jar包里面的配置文件,保存退出,然后重启jar包,但是这种方式也比较麻烦。

解决方案

可以使用maven插件来将 项目所有的依赖包 和 配置文件 抽取到要打的jar包的外面,这样我们的一个jar包就只有 几十kb 大小,如果不涉及到更改依赖的话,上传这样一个包是非常方便的。

因为jar包依赖的配置文件现在都在jar包的外面,所以只需要在jar包外面修改配置文件,然后重启jar包就可以生效了

<plugins><!-- 下面这些插件可以让你打一个很小的jar包 --><!-- 所有的配置文件都抽取到了 ../conf 目录中 --><!-- 所有的依赖包都抽取到了 dependencyJars 目录中 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><!-- 项目resource下的以下几种目录配置文件都不打入jar包 --><excludes><exclude>bin/**</exclude><exclude>config/**</exclude><exclude>static/**</exclude><exclude>templates/**</exclude><exclude>*.yml</exclude><exclude>*.xml</exclude></excludes><archive><manifest><addClasspath>true</addClasspath><!--MANIFEST.MF 中 Class-Path 加入前缀,不需要配置,在外部命令行指定--><classpathPrefix>dependencyJars/</classpathPrefix><!-- jar包不包含唯一版本标识 --><useUniqueVersions>false</useUniqueVersions><!--指定入口类,如果程序里只有一个main方法就建议不要手动配置--><mainClass>com.test.Main</mainClass></manifest><manifestEntries><Class-Path>../conf/</Class-Path></manifestEntries></archive><outputDirectory>${project.build.directory}</outputDirectory></configuration></plugin><!--拷贝依赖 copy-dependencies --><!-- 所有的依赖包都被拷贝到 dependencyJars 目录中 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>${project.build.directory}/dependencyJars/</outputDirectory><overWriteReleases>false</overWriteReleases><overWriteSnapshots>false</overWriteSnapshots><overWriteIfNewer>true</overWriteIfNewer></configuration></execution></executions></plugin><!--拷贝资源文件 copy-resources --><!-- 所有的配置文件拷贝到 ../conf 目录中 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><executions><execution><id>copy-resources</id><phase>package</phase><goals><goal>copy-resources</goal></goals><configuration><encoding>UTF-8</encoding><resources><resource><directory>src/main/resources</directory></resource></resources><outputDirectory>${project.build.directory}/../conf</outputDirectory></configuration></execution></executions></plugin><!-- 打包发布时,跳过单元测试 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skipTests>true</skipTests></configuration></plugin><!-- 删除打包出来的文件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-clean-plugin</artifactId><configuration><filesets><fileset><directory>${basedir}/conf</directory></fileset><fileset><directory>${basedir}/dependencyJars</directory></fileset></filesets></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target></configuration></plugin></plugins>

效果展示:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。