Springcloud的Maven插件(一):repackage目标

更新时间:2023-05-12 23:37:37 阅读: 评论:0

Springcloud的Maven插件(⼀):repackage⽬标
简介
  Spring Boot Maven Plugin插件提供spring boot在maven中的⽀持。允许你打包可运⾏的jar包或war包。
七夕节干什么
  插件提供了⼏个maven⽬标和Spring Boot 应⽤⼀起⼯作。总的有:
spring-boot:repackage  请阅读:萦心
spring-boot:run  请阅读:
spring-boot:start and spring-boot:stop
spring-boot:build-info
  repackage:创建⼀个⾃动可执⾏的jar或war⽂件。它可以替换常规的artifact,或者⽤⼀个单独的classifier附属在maven构建的⽣命周期中。
  下⾯我们详细看下repackage这个⽬标。
⼀、简单引⽤
  ⽤了重新打包应⽤程序,我们需要在l⽂件中加⼀个简单的引⽤到Spring Boot Maven Plugin插件中,代码如下:repaceage 最简单的结构
1<build>
2  ...
3<plugins>
4    ...
5<plugin>
6<groupId>org.springframework.boot</groupId>
7<artifactId>spring-boot-maven-plugin</artifactId>
8<version>1.5.7.RELEASE</version>
9<executions>
10<execution>
11<goals>
12<goal>repackage</goal>
13</goals>
14</execution>
15</executions>
16</plugin>
17    ...
18</plugins>
19  ...
20</build>
repaceage 最简单的结构
⼆、剔除不需要的依赖
  这个例⼦重新打包了⼀个jar包或war包,这个jar包或war包被构建于maven⽣命周期的package阶段,包括定义在⼯程中的任何依赖(包括scope为provided)。如果有⼀些依赖模块需要被排除掉,可以使⽤⼀个exclude的选项。
  默认情况下,repackage和run这两个maven⽬标会包括定义在⼯程中的任何依赖。⼀些依赖被要求从可执⾏jar包中排除。下⾯有三种⽅式可以在包运⾏时排除依赖模块。
  ⽅式1::排除⼀个具体的maven 模块,通过唯⼀的groupId和artifactId组合来实现。(如果有必要,可以加⼊classifier来唯⼀确认。) 1<project>
2  ...
3<build>
4    ...
5<plugins>
6      ...
7<plugin>
8<groupId>org.springframework.boot</groupId>
9<artifactId>spring-boot-maven-plugin</artifactId>
10<version>1.5.6.RELEASE</version>
11<configuration>
12<excludes>
13<exclude>
14<groupId>com.foo</groupId>
15<artifactId>bar</artifactId>
16</exclude>
17</excludes>
18</configuration>
19        ...
21      ...
22</plugins>
23    ...
24</build>
25  ...
26</project>
排除⼀个具体的maven模块
  ⽅式2:排除和“指定的artifactId”相符的所有maven模块。
1<project>
2  ...
3<build>
4    ...
5<plugins>
6      ...
7<plugin>中药查询
8<groupId>org.springframework.boot</groupId>
9<artifactId>spring-boot-maven-plugin</artifactId>
10<version>1.5.6.RELEASE</version>
11<configuration>
12<excludeArtifactIds>my-lib,another-lib</excludeArtifactIds>
银行春节放假时间13</configuration>
扯面14        ...
15</plugin>
16      ...
17</plugins>
18    ...
19</build>
20  ...
21</project>
排除和指定的artifactId项⽬的所有maven模块
  ⽅式3:排除属于“指定的groupId”的所有maven模块。
1<project>
2  ...
3<build>
4    ...
5<plugins>
6      ...
7<plugin>
8<groupId>org.springframework.boot</groupId>
9<artifactId>spring-boot-maven-plugin</artifactId>
10<version>1.5.6.RELEASE</version>
11<configuration>
12<excludeGroupIds>com.foo</excludeGroupIds>
13</configuration>
14        ...
15</plugin>
16      ...
跤组词17</plugins>
18    ...
19</build>
20  ...
21</project>
排除属于指定的groupId的所有maven模块
三、重写manifest 
  这个插件还可以重写项⽬的manifest (可运⾏jar包的MANIFEST.MF),特别是管理Main-Class和Start-Class启动类。如果默认的配置不能满⾜需求,我们可以在这⾥做配置。通过插件的layout属性可以确实地控制Main-Class。
1<build>
2  ...
3<plugins>
4    ...
5<plugin>
6<groupId>org.springframework.boot</groupId>
7<artifactId>spring-boot-maven-plugin</artifactId>
8<version>1.5.7.RELEASE</version>
9<configuration>
10<mainClass>${start-class}</mainClass>
11<layout>ZIP</layout>
12</configuration>
13<executions>
15<goals>
16<goal>repackage</goal>
17</goals>
18</execution>
fold过去式
19</executions>
20</plugin>
21    ...
22</plugins>
23  ...
24</build>
repackage mainClass
  执⾏打包命令:mvn package spring-boot:repackage。注意:这⾥不能写成mvn spring-boot:repackage。否则会报Source must refer to an existing file异常。
  layout属性默认根据archive type(jar or war)⽽定。总的有5中类型:
JAR:常规的可执⾏jar包的布局。
WAR:可执⾏war包的布局。
ZIP(和DIR⼀样):和使⽤PropertiesLauncher的jar包布局⼀样。
MODULE:包括依赖包(排除scope为provided的依赖包)和项⽬资源
NONE:包括所有的依赖包和项⽬资源。
四、利⽤classifier分离代码包和依赖包
  当⾃⼰写项⽬需要发布出去给别⼈依赖时,就只需要⾃⼰写的代码打包,依赖的包不能打进来。否则最后别⼈在⽤你提供的包时,就会出现重复包,导致最后打包时包会⾮常巨⼤。
  在这个Spring Boot Maven Plugin这个插件下,我们只需要提供classifier即可实现这个功能。具体如下:
1<project>
2  ...
3<build>
4    ...
5<plugins>
6      ...
7<plugin>
8<groupId>org.springframework.boot</groupId>
9<artifactId>spring-boot-maven-plugin</artifactId>
10<version>1.5.7.RELEASE</version>
11<executions>
12<execution>
13<goals>
14<goal>repackage</goal>
15</goals>
16<configuration>
砂仁的副作用
17<classifier>exec</classifier>
18</configuration>
19</execution>
20</executions>
21        ...
22</plugin>
23      ...
24</plugins>
25    ...
26</build>
27  ...
28</project>
repackage classifier
五、打包时排除resources下的资源⽂件
1<build>
2  ...
3<resources>
4<resource>
5<directory>src/main/resources</directory>
6<excludes>
7<exclude>**/*.properties</exclude>
8<exclude>**/*.xml</exclude>
9<exclude>**/*.yml</exclude>
10</excludes>
11</resource>
12</resources>
13<plugins>
14      ...
16<groupId>org.springframework.boot</groupId>
17<artifactId>spring-boot-maven-plugin</artifactId>
18<executions>
19<execution>
20<goals>
21<goal>repackage</goal>
22</goals>
23</execution>
24</executions>
25</plugin>
26      ...
27</plugins>
28  ...
29</build>
排除resources下的资源⽂件
喜欢请微信扫描下⾯⼆维码,关注我公众号--“精修Java”,做⼀些实战项⽬中的问题和解决⽅案分享。

本文发布于:2023-05-12 23:37:37,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/890117.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:依赖   排除   不能   需要
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图