先创建好四个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>

 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐