assembly配置文件与jar包分离的实现

**assembly配置文件与jar包分离的实现**
1.因为每次打jar包时间过长,或者改一句代码,配置文件就得改成测试环境的,再打上去,十分浪费时间。所以在此分享下,我已使用过的配置文件瘦身打包方式。引用的jar放在lib目录下,配置文件放置在config目录下,启动jar包放置在boot目录下,启动文件boot.sh放置在bin目录下,打包完成后,如果是在Linux上运行,只需要在jar包目录里面bin目录下执行./boot.sh restart   来吧,上干货。

1.**先在pom.xml文件中加上打包插件**,如下:
<plugin >
<groupId>org.apache.maven.plugins< /groupId>
<artifactId>maven-assembly-plugin< /artifactId>
<version>3.3.0< /versoin>
< configuration>
< descriptors>
< !--assembly.xml文件在项目中的路径,下面是我项目中的路径-->
< descriptor>src/main/assembly/assembly.xml< /descriptor>
< /descriptors>
< /configuration>
< executions>
< execution>
< id>make-assembly< /id>
< phase>package< /phase>
< goals>
< goal>single< /goal>
< /goals>
< /execution>
< /plugin>

2.在pom中加上上面的还不行哦,还需要**加上org.apache.maven.plugins中maven-jar-plugin插件**。如下:
< plugin>
< groupId>org.apache.maven.plugins< /groupId>
< artifactId>maven-jar-plugin< /artifactId>
< version>3.2.2< /version>
< configuration>
< archive>
< manifest>
< !--项目启动类-->
< mainClass>com.plocie.Application< /mainClass>
< !--依赖JAR的目录前缀-->
< classpathPrefix>../lib< /classpathPrefix>
< addClasspath>true< /addClasspath>
< /manifest>
< !--第三方依赖手动加入ClassPath-->
< manifestEntries>
< Class-Path>../config/ ../lib/对应依赖.jar< /Class-Path>
< /manifestEntries>
< /archive>
< includes>
< !-- 只打包制定目录的文件-->
< include>com/plocie/**< /include>
< /includes>
< /configuration>
< /plugin>

3.到最后一步啦,**配置我们的assembly.xml文件**,没有这个文件要新增的。我是创建在src/main/assembly文件夹下,assembly文件夹下还要创建一个bin文件夹,里面放boot.sh启动文件。
assembly.xml文件内容:
< ?xml version="1.0" encoding="UTF-8">
< assembly>
< !--可自定义,这里制定的是项目环境-->
< id>${profileActive}-${project.version}</id>

< !--打包的类型,如果有N个,将会打N个类型的包-->
< formats>
< format>tar.gz< /format>
< /formats>

< includeBaseDirectory>true< /includeBaseDirectory>

< fileSets>
< !--将src/bin目录下的所有文件输出到打包后的bin目录中-->
< fileSet>
< directory>${basedir}/src/main/assembly/bin< /directory>
< outputDirectory>bin< /outputDirectory>
< fileMode>0755< /fileMode>
0755即用户具有读写执行权限,
< lineEnding>unix< /lineEnding>
< filtered>true< /filtered>
< includes>
< include>**.sh< /include>
< include>**.bat</include>
</includes>
</fileSet>

< !--指定输出target/classess中的配置文件到config目录中 -->
<fileSet>
<durectotry>${basedir}/target/classes</directory>
<outputDirectory>config</outputDirectory>
<fileMode>0644</fileMode>
<includes>
<include>application.yml</include>
<include>application-${profileActive}.yml</include>
<include>mapper/**/*.xml</include>
<include>static/**</include>
<include>templates/**</include>
<include>*.xml</include>
<include>*.properties</include>
<include>*.jks</include>
</includes.
</fileSet>

<!--将依赖打包到lib目录中-->

<fileSet>

<directory>${basedir}/target/lib<directory>

<outputDirectory>lib</outputDirectory>

<fileMode>0755</fileMode>

</fileSet>

<!-- 将第三方依赖打包到lib目录中-->

<fileSet>

<directory>${pom.basedir}/src/main/resources/lib/</directory>

<outputDirectory>lib</outputDirectory>

<fileMode>0755</fileMode>

</fileSet>

<!-- 将项目启动jar打包到boot目录中-->

<fileSet>

<directory>${basedir}/target</directory>

<outputDirectory>boot</outputDirectory>

<fileMode>0755</fileMode>

<includes>

<include>${project.build.finalName}.jar</include>

</includes>

</fileSet>

<!--包含根目录下的文件-->

<fileSet>

<directory>${basedir}</directory>

<includes>

<include>NOTICE</include>

<include>LICENSE</include>

<include>*.md/include>

</includes>

</fileSet>

</fileSets>

</assembly>

结束语:此内容是手写,难免有个别单词错误,需要检查一下哦。如果遇到打包问题可留言,我会一一解答。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值