springboot项目中Maven打jar包部署服务器引用多环境yml配置文件的三种方式
springBoot配置多环境yml配置,并且打包编译引用外部文件的三种方法
先创建好四个yml文件:可以统一将端口号写在application.yml文件,也可以每个环境写上不一样的端口号,我这里是统一每个环境的端口号都一样的
本地启动jar包命令:java -jar xxx.jar --spring.profiles.active=你需要指定的yml名字
服务器启动jar包命令:nohup java -server -jar xxx.jar --spring.profiles.active=你需要指定的yml名字 >>nohup 2>&1 &
主要配置:application.ym;
开发环境:application-dev.ym,
测试环境:application-test.ym,
生产环境:application-prof.ym,
1、第一种:直接将yml配置打包到jar包里面
1.1:将上面的yml准备好之后,修改pow文件的打包依赖
1.2:直接使用标题下的启动命令
<!--打包命令-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 指定maven编译的jdk版本,如果不指定,maven3默认用jdk 1.5 maven2默认用jdk1.3 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<compilerVersion>1.8</compilerVersion>
<!-- 一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行(对于低版本目标jdk,源代码中不能使用低版本jdk中不支持的语法),会存在target不同于source的情况 -->
<source>1.8</source><!-- 源代码使用的JDK版本 -->
<target>1.8</target><!-- 需要生成的目标class文件的编译版本 -->
<encoding>utf-8</encoding><!-- 字符集编码 -->
<skipTests>true</skipTests><!-- 跳过测试 -->
</configuration>
</plugin>
<!--部署linux服务器依赖-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifest>
<mainClass>com.xxgame.admin.web.AdminApplication</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<addMavenDescriptor />
<manifestEntries>
<Implementation-Version>${maven.build.timestamp}</Implementation-Version>
<Class-Path>resources/</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
2、第二种编译jar文件指定外部配置文件
2.1:将上面的yml准备好之后,修改pow文件的打包依赖
2.2:在maven-jar-pluugin依赖里加忽略配置的命令
2.3:直接在jar包同级目录下创建一个config文件夹,在里面编写你需要的yml配置文件,因为config是默认最高级配置中心
2.4:直接使用标题下的启动命令
<build>
<!--打包命令-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 指定maven编译的jdk版本,如果不指定,maven3默认用jdk 1.5 maven2默认用jdk1.3 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<compilerVersion>1.8</compilerVersion>
<!-- 一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行(对于低版本目标jdk,源代码中不能使用低版本jdk中不支持的语法),会存在target不同于source的情况 -->
<source>1.8</source><!-- 源代码使用的JDK版本 -->
<target>1.8</target><!-- 需要生成的目标class文件的编译版本 -->
<encoding>utf-8</encoding><!-- 字符集编码 -->
<skipTests>true</skipTests><!-- 跳过测试 -->
</configuration>
</plugin>
<!--部署linux服务器依赖-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<!--打包忽略文件-->
<excludes>
<exclue>**/*.yml</exclue>
<exclue>**/*.xml</exclue>
</excludes>
<archive>
<manifest>
<mainClass>com.xxgame.admin.web.AdminApplication</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<addMavenDescriptor />
<manifestEntries>
<Implementation-Version>${maven.build.timestamp}</Implementation-Version>
<Class-Path>resources/</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
3、第三种:使用依赖,直接将配置文件打包出来存在resources/
3.1:在pow文件添加依赖
3.2:启动命令在标题下面
原理:在打包依赖忽略掉yml配置,并且将resource文件夹的文件copy出来,所有jar包里面就没有配置了,并且外部生成resource配置文件,在编译jar包时候时候就会主动引用同目录下的外部文件,当然对文件名是有限制的,暂时我知道的只有:resource和config;
<build>
<!--打包命令-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 指定maven编译的jdk版本,如果不指定,maven3默认用jdk 1.5 maven2默认用jdk1.3 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<compilerVersion>1.8</compilerVersion>
<!-- 一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行(对于低版本目标jdk,源代码中不能使用低版本jdk中不支持的语法),会存在target不同于source的情况 -->
<source>1.8</source><!-- 源代码使用的JDK版本 -->
<target>1.8</target><!-- 需要生成的目标class文件的编译版本 -->
<encoding>utf-8</encoding><!-- 字符集编码 -->
<skipTests>true</skipTests><!-- 跳过测试 -->
</configuration>
</plugin>
<!--部署linux服务器依赖-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<!--打包忽略文件-->
<excludes>
<exclue>**/*.yml</exclue>
<exclue>**/*.xml</exclue>
</excludes>
<archive>
<manifest>
<mainClass>com.xxgame.admin.web.AdminApplication</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<addMavenDescriptor />
<manifestEntries>
<Implementation-Version>${maven.build.timestamp}</Implementation-Version>
<Class-Path>resources/</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<!--将配置文件从jar独立出来,实现动态修改配置文件-->
<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>
<outputDirectory>${project.build.directory}/resources</outputDirectory>
<resources>
<resource>
<directory>src/main/resources/</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
更多推荐
所有评论(0)