2015-02-06 76 views
0

我試圖使我的spring引導應用程序準備好使用配置文件(dev,prod ...)和maven 3使用spring源代碼工具套件進行簡單打包戰爭。在STS中使用maven和配置文件的SPRING BOOT可展開war文件

的配置文件設置和工作不錯,我可以用PARAM在application.properties切換配置文件:spring.profiles.active

我創建應用程序 - {}型材和的.properties相應啓動讀取屬性文件在application.properties spring.profiles.active參數組

現在我創建一個maven運行配置,使用目標部分:包春啓動:重新包裝

,我也加入參數部分:spring.profiles 。dev作爲價值的活動。

最後,我想在spring.profiles.active中運行不同值的配置,以便爲不同的環境做好準備。

當我以調試模式運行配置時,我可以在測試部分看到我在maven中傳遞的當前參數被正確使用(如果我設置dev,我會在maven測試中看到我的開發數據庫被調用, application-dev.properties文件),但是當maven產生最終的戰爭之後,這個參數似乎不再被使用。

當我部署軟件包時,彈簧引導讀取spring.profiles.active(如果存在於application.properties中)。如果我在application.properties中刪除它,引導只是使用application.properties中的params

我做錯了什麼?我認爲這是在'重新包裝'期間,我的參數設置在maven中丟失了。

我還有一個問題,我嘗試在插件部分給Maven的最終戰爭命名,但它似乎不像我以前用maven那樣工作。

這裏是我的pom.xml的末尾:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <configuration> 
       <warName>stdapps</warName> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

這裏是我的Maven配置的一個畫面:

Maven run configuration

感謝您的幫助

回答

1

關於春天引導maven插件配置,如plugin documentation,中所述warName不是一個有效的參數,finalName是。

另外,根據我的經驗,即使文檔說分類器參數是可選的,當我嘗試使用最終名稱和輸出目錄配置重新打包目標時,從終端執行命令mvn spring-boot:repackage時,結果是構建失敗和錯誤消息,指示分類器不能爲空。 (?BUG)

所以這是插件配置爲我的作品:

<plugin> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-maven-plugin</artifactId> 
    <executions> 
     <execution> 
      <goals> 
       <goal>repackage</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>deployments</outputDirectory> 
       <finalName>warName</finalName> 
       <classifier>classifierName</classifier> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

由此,在我的項目在部署文件夾warName-classifierName.war文件。

相關問題