1. 程式人生 > >spring 使用 maven profile

spring 使用 maven profile

備註 ive con 打包 1.8 指定jdk efault rop BYD

先看看 maven 定義 profile 的寫法

	<!-- profiles -->
	<profiles>
		<profile>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<id>dev</id>
			<properties>
				<profile.env>dev</profile.env>
			</properties>
		</profile>
		<profile>
			<id>test</id>
			<properties>
				<profile.env>test</profile.env>
			</properties>
		</profile>
		<profile>
			<id>product</id>
			<properties>
				<profile.env>product</profile.env>
			</properties>
		</profile>
	</profiles>

  

然後在 spring.yml 裏面這個麽寫

技術分享圖片

但是 spring 在運行的時候 已經和maven 沒有關系了 這時候 ${ 變量名的寫法 } 已經不生效了

備註: 這裏 ${ 變量名 } 是maven 引用 變量的 寫法。

比如:

技術分享圖片

這裏的 ${serverA.version}_${profile.env} 分別是引用自 前面配置文件 中定義的 maven 變量 ${serverA.version} 來自 <properties> ${profile.env} 來自 profile

技術分享圖片

怎麽才能讓 spring一識別 maven的 表達式呢?我們知道 spring運行在maven 打包以後,所以 不能可能spring運行的時候還能讀取到 maven的 變量,所以只能是在maven打包的時候替換文件。

這就是核心思想了。加上下面的代碼就可以打包的時候替換了spring.yml 中 maven的 變量了 。

    <resources>
			<resource>
				<directory>src/main/resources/</directory>
				<filtering>true</filtering>
			</resource>
		</resources>        

  

  這個 代碼 加在 <build> 裏面就可以了

	<!-- 指定jdk 的版本 -->
	<build>
		<resources>
			<resource>
				<directory>src/main/resources/</directory>
				<filtering>true</filtering>
			</resource>
		</resources>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>

  

上面 多了一個 修改 jdk 版本的 配置,我的另一篇 博客裏面寫了 修改 jdk 版本的 maven的 2 中配置方式。

spring 使用 maven profile