java無法直接引用pom中定義的變數
maven佔位符類似於EL表示式,通過${}來獲取pom中定義的變數,這樣可以根據不同的部署環境,將對應的xml檔案中的變數進行替換(一般情況下,測試和開發環境引用的變數都是不一樣的,如果手動替換,這樣工作量會很大)。根據pom.xml中不同部署環境配置的變數,可以動態的將xml檔案中引用變數替換,也可以將Index頁面中引用的靜態檔案路徑動態變換(詳情見:);但是maven中定義的變數,無法直接在程式碼中獲取,需要定義在properties檔案中,然後將對應環境properties在pom中引入即可。
下面就java中環境變數獲取演示,程式碼如下:
1.properties檔案中環境變數定義
2.pom檔案中對應部署環境引入對應properties檔案
</build>
<profiles><!--部署環境-->
<profile>
<id>local</id><!--local環境-->
<build>
<resources>
<resource>
<directory>src/main/profiles/local</directory><!--引入properties檔案地址-->
</resource>
</resources>
</build>
<properties>
<profile.env>local</profile.env><!--變數,標識環境-->
<log.root.level>INFO</log.root.level>
<log.logger.level>DEBUG</log.logger.level>
<log.console.level>INFO</log.console.level>
</properties>
</profile>
<profile>
<id>development</id><!--local環境-->
<build>
<resources>
<resource>
<directory>src/main/profiles/development</directory><!--引入properties檔案地址-->
</resource>
</resources>
</build>
<properties>
<profile.env>development</profile.env><!--變數,標識環境-->
<log.root.level>INFO</log.root.level>
<log.logger.level>DEBUG</log.logger.level>
<log.console.level>INFO</log.console.level>
</properties>
</profile>
<profile>
<id>preview</id><!--local環境-->
<build>
<resources>
<resource>
<directory>src/main/profiles/preview</directory><!--引入properties檔案地址-->
</resource>
</resources>
</build>
<properties>
<profile.env>preview</profile.env><!--變數,標識環境-->
<log.root.level>INFO</log.root.level>
<log.logger.level>DEBUG</log.logger.level>
<log.console.level>INFO</log.console.level>
</properties>
</profile>
<profile>
<id>product</id><!--生產部署環境-->
<build>
<resources>
<resource>
<directory>src/main/profiles/production</directory><!--引入properties檔案地址-->
</resource>
</resources>
</build>
<properties>
<profile.env>product</profile.env><!--product-->
<log.root.level>INFO</log.root.level>
<log.logger.level>DEBUG</log.logger.level>
<log.console.level>INFO</log.console.level>
<!--相關佔位符變數配置,例如:xml中配置為${node.path},則pom進行如下配置-->
<node.path>main.js</node.path>
</properties>
</profile>
</profiles>
3.在java程式碼中使用變數接收引數:
@Value("${profile.env}")//SpringEl表示式
private String env;
4.這樣就可以獲取到對應編譯環境的環境變數。