springcloud⼿动打jar包详解1、springcloud项⽬打包步骤
⽗项⽬l⽂件中添加的内容
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.2.6.RELEASE</version>
</plugin>
<plugin>
<!-- ⽤下⾯插件的来给java进⾏编译的 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<!-- 将会使⽤指定的 JDK 版本将 java ⽂件编译为 class ⽂件(针对编译运⾏环境) -->
<source>8</source>
<!--  将会使⽤指定的 JDK 版本对源代码进⾏编译(针对编译运⾏环境)-->
<target>8</target>
</configuration>
</plugin>
</plugins>
<!-- 将资源⽂件打包进去(各种xml,properties,xsd⽂件)-->
<resources>
<resource>
<!-- 指定⽂件路径 -->
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<!-- **表⽰任意级⽬录,*表⽰任意⽂件 -->
<include>**/*</include>
</includes>
</resource>
</resources>
</build>
⼦项⽬中加的内容
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 指定man函数,也就是程序⼊⼝ -->
<mainClass>com.make.study.MyBoot</mainClass>
</configuration>
maven打包本地jar包<executions>
<execution>
<goals>
<!-- 设置打包⽬标 -->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 多配置环境下进⾏过滤,prod,test,dev过滤 -->
<filtering>true</filtering>
</resource>
</resources>
</build>
2、打jar包问题详解:
2.1、为什么要指定mainClass
2.1.1、mainClass标签
我们打包项⽬时,如果类中项⽬内有两个带有main⽅法的类并且都使⽤了@SpringBootApplication注解(或者另⼀种情形:你有两个main⽅法并且所在类都没有使⽤@SpringBootApplication注解),那么就⽆确定程序的⼊⼝mainClass
所以我们需要⼿动在打包的时候指定程序⼊⼝,然后这⾥的设置也对应打包后的清单⽂件(MANIFEST.MF)
2.1.1、layout属性
layout属性的值可以如下
JAR,即通常的可执⾏jar,清单⽂件中应该是Main-Class: org.springframework.boot.loader.JarLauncher
WAR,即通常的可执⾏war,需要的servlet容器依赖位于WEB-INF/lib-provided
ZIP,即DIR,类似于JAR,Main-Class: org.springframework.boot.loader.PropertiesLauncher
MODULE,将所有的依赖库打包(scope为provided的除外),但是不打包Spring Boot的任何Launcher。
NONE,将所有的依赖库打包,但是不打包Spring Boot的任何Launcher。
layout属性默认不需要配置,插件会⾃动推断。
2.2、打包⽬标goal标签
2.2.1、maven的打包⽬标:
spring-boot:repackage,默认goal。在mvn package之后,再次打包可执⾏的jar/war,同时保留mvn package⽣成的jar/war为.original
spring-boot:run,运⾏Spring Boot应⽤
spring-boot:start,在mvn integration-test阶段,进⾏Spring Boot应⽤⽣命周期的管理
spring-boot:stop,在mvn integration-test阶段,进⾏Spring Boot应⽤⽣命周期的管理
spring-boot:build-info,⽣成Actuator使⽤的构建信息⽂件build-info.properties
2.2.2、打包剔除依赖等
2.3、打包的filtering标签
打包时替换⽂件中的替换⽂件名,也能替换⽂件⾥⾯的标识符.
当我们在项⽬中配置了多种环境时:
pom⽂件:
<profiles>
<profile>
<id>dev</id>
<properties>
<profileActive>dev</profileActive>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<profileActive>test</profileActive>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<profileActive>prod</profileActive>
</properties>
</profile>
</profiles>
yml⽂件中:
spring:
profiles:
active: @profileActive@
那么设置filtering为true可以将@profileActive@在打包后替换成对应的环境变量名。⽐如dev
如果不开启这个那么启动jar包报错:
5、jar包的组成内容

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