2013-01-02 130 views
4

我對Maven完全陌生。我正在嘗試設置一個新項目,使其不需要20頁長的文檔和截圖來設置它。我在Mac和PC上有開發人員,所以我需要能夠自定義catalina.home目錄,因爲我不能只強加一個標準位置。我想我做的〜/ .m2目錄/ settings.xml中具有下列文件:maven設置自定義屬性

<profile> 
    <id>my-site-dev</id> 
    <activation> 
    <activeByDefault>true</activeByDefault> 
    </activation> 
    <properties> 
    <catalina.home>/path/to/apache-tomcat</catalina.home> 
    </properties> 
</profile> 

然而,這裏的文檔:http://maven.apache.org/guides/introduction/introduction-to-profiles.html#Profile_Pitfalls似乎預示着什麼,我想完成是一個壞主意。什麼是完成這個的官方方式,以便在我的pom.xml中,我可以引用$ {catalina.home}?

現在我已經用id聲明瞭我的配置文件,如果我的pom.xml無法加載配置文件「my-site-dev」,我是否可能會失敗生成?如果可能的話,我想從settings.xml中獲得<activeByDefault>。我不想無緣無故地干擾他們的全球環境,我希望儘可能多地保持自我。

回答

3

不要使用activeByDefault,因爲它會掩蓋所有其他配置文件:

這裏是你應該使用什麼:

<profiles> 
    <profile> 
     <id>path-to-catalina.home-linux</id> 
     <activation> 
      <os> 
       <family>linux</family> 
      </os> 
     </activation> 
     <properties> 
      <catalina.home>...</catalina.home> 
     </properties> 
    </profile> 
    <profile> 
     <id>path-to-catalina.home-mac</id> 
     <activation> 
      <os> 
       <family>mac</family> 
      </os> 
     </activation> 
     <properties> 
      <catalina.home>...</catalina.home> 
     </properties> 
    </profile> 
    <profile> 
     <id>path-to-catalina.home-windows</id> 
     <activation> 
      <os> 
       <family>windows</family> 
      </os> 
     </activation> 
     <properties> 
      <catalina.home>...</catalina.home>   
      </properties> 
    </profile> 
+0

謝謝,現在我明白了發生了什麼,這是完美的! – farkerhaiku

0

你可以在你的pom中使用基於os激活的配置文件。

<profiles> 
    <profile> 
    <activation> 
     <os> 
     ... 

你在做什麼,需要catalina.home?

如果您正在使用maven部署到應用服務器,那麼您已經超出了「一致的,可移植的構建」規則集 - 並且不在maven的主要用例/最佳實踐之列。

不是你不應該這樣做 - 因爲它很方便。只要確保將構建項目與部署項目分開。

+0

如果我是一致的便攜式構建規則集以外,那麼爲什麼有沒有默認的mvn部署目標?我希望開發人員能夠輸入mvn deploy,讓所有測試運行,編譯和構建戰爭,並在本地部署,以便他們可以運行UAT(如果還有更好的方法,我也可以使用它)。 – farkerhaiku

+0

mvn deploy意味着「將構建的工件(通常爲.war文件)」部署到Maven存儲庫,以便其他項目可以依賴於它而不必構建它。它與應用程序部署無關。另外,你看過http://tomcat.apache.org/maven-plugin-2.0/? – ptyx