2014-12-27 124 views
1

我是新來的maven和閱讀位於這個和其他資源的配置文件如何使用Maven配置文件?

我理解我們使用配置文件,如果我們想要重寫一些默認值或做一些特定的東西。

在我的遺留項目,我可以看到下面的配置文件,我只看到覆蓋app.mode屬性。但我沒有看到使用這個屬性 進一步任何地方建立。我相信這裏做了什麼特別的事情?

<profiles> 
     <profile> 
      <id>dev</id> 
      <properties> 
       <app.mode>dev</app.mode> 
      </properties> 
     </profile> 
</profiles> 
+0

繼評論你的問題不是在聚甲醛,但在Spring配置。看看mvn的copy-replace/filter特性,讓你在你的spring配置中使用'app.mode'。 – Hannes 2014-12-27 18:17:21

回答

0

配置文件將激活如果你通過-Pdev命令行的Maven上。

mvn -Pdev 

請參閱http://maven.apache.org/guides/introduction/introduction-to-profiles.html

此配置文件的作用是將屬性app.mode的設置從之前的設置更改爲dev。您將需要搜索您的pom文件(以及任何模塊的poms)以使用$[app.mode}來查看發生了什麼 - 如果有的話。

Maven屬性不會自動傳遞到Spring,但找到配置將它們重新導出爲系統屬性以使其對Spring可見是很常見的。這通常發生在確保安全和故障安全的配置中,但它是明確的,您仍然可以在某個地方看到${app.mode}

+0

@ bmargilies其實我知道它是如何被激活的,但我沒有得到我們在這個檔案中做的特別的事情 – emilly 2014-12-27 16:42:47

+0

你的意思是說我需要在pom文件中搜索$ {app.mode}。對?如果是,我沒有在pom文件中找到$ {app.mode}的用法。但是,我可以看到它在spring.xml文件中使用。但我想知道可以提供參數春天嗎? – emilly 2014-12-27 17:04:48

+0

是的,我進一步澄清。 – bmargulies 2014-12-27 17:05:50

0

如果設置的屬性沒有在構建的其他任何地方使用(你是否檢查過任何子模塊?),那麼你的問題的答案是「在這種情況下,它什麼都不做」。

但是,一般來說,設置一個這樣的屬性會使它稍後在構建中可用,以防您需要某些東西。如果我不得不猜測,我會說這是代碼的不完整清理或過早優化的結果。

+0

我沒有在包含子模塊的pom文件中找到$ {app.mode}的用法。但是,我可以看到它在spring.xml文件中使用。但我想知道可以提供參數春天嗎? – emilly 2014-12-27 17:10:11

1

Maven配置文件可以配置,但您希望它們是。這裏有一些用例:

a)該項目有幾個開發人員。出於政治和宗教原因,一些開發人員正在使用Windows,一些開發人員正在使用Linux。該團隊開發了兩個配置文件,一個用於Linux,另一個用於Windows,設置項目根路徑,臨時文件夾路徑,支持程序路徑。這些變量被注入到依賴性計算進程中,以及需要這些信息的下級進程中。這些配置文件設置將放入每個程序員的settings.xml文件中。

b)其中一名開發人員借給該項目一週。她不想爲項目標準目錄佈局等重新配置計算機,因此她創建了自己的settings.xml,允許她在自己的根目錄中工作。

c)該項目使用持續集成服務器,例如Hudson或Jenkins。 CI需要有自己的集成測試數據庫,因此根據需要,它可能會有「devtest」,「prodtest」和「fulltest」等模式。

+0

我沒有在包含子模塊的pom文件中找到$ {app.mode}的用法。但是,我可以看到它在spring.xml文件中使用。但我想知道可以提供參數春天嗎? – emilly 2014-12-27 17:15:26