2013-07-24 33 views
4

我希望能夠在我的本地開發安裝的tomcat上構建和部署我的java webapp,而無需在每臺開發計算機上將maven的settings.xml添加到tomcat用戶的證書。 Every article我發現需要修改settings.xml。將tomcat服務器憑證添加到項目的pom中,而不是settings.xml

我試圖將標記添加到我的POM文件中,並且它似乎不被允許,因爲當我運行「maven compile」時出現「格式錯誤的POM」錯誤。

<project...> 
    ... 
    <servers> 
     <server> 
      <id>localhost</id> 
      <username>admin</username> 
      <password>password</password> 
     </server> 
    </servers> 
    <dependencies> 
    ... 
    </dependencies> 
</project> 

回答

4

答案在文章的結尾給出你引用

之所以憑據是在settings.xml設定是因爲你的用戶名和密碼應該是在大多數情況下祕密,沒有理由偏離設置服務器憑證的標準方式,人們不得不適應。

您的POM文件通常會被提交到一個源代碼管理系統,這使得它成爲保留敏感信息的最糟糕的地方。設置文件中的密碼也可以是encrypted

最後,POM文件旨在保存關於如何構建代碼的信息。設置文件旨在爲您的構建設置環境特定設置。諸如Maven存儲庫的位置等項目。關於如何部署代碼的信息也屬於此類別,您和我可能共享代碼庫,但我們不太可能共享相同的Tomcat服務器。

+1

我知道這通常不是一個好主意,但由於所有的開發機器都是相同的,所以能夠更容易地檢查出來,而不必擔心也會修改settings.xml。我只想知道是否有可能重寫此行爲。 – johnktims

+0

@John它是,只需在您的POM文件中設置屬性。 –

+1

我已經試過了,我只是得到關於「畸形POM」的錯誤。這裏就是我所說的那樣: ... 本地主機 管理 密碼 <依賴性> ... – johnktims

5

你可以試試這個:

<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <url>${server-url}</url> <path>${deploy-path}</path> <username>${deploy-un}</username> <password>${deploy-pw}</password> </configuration> </plugin>

當你在你的項目很多模塊,使用<profile>每個模塊中部署每個模塊不同URLs。例如:

在模塊A:

<profile> <id>server1</id> <properties> <!-- Replace with URL and authentication if needed --> <server-url>http://localhost:8080/manager/text</server-url> <deploy-path>/moduleA</deploy-path> <deploy-un>tomcatscript</deploy-un> <deploy-pw>[email protected]</deploy-pw> </properties> </profile>

在模塊B:

<profile> <id>server1</id> <properties> <!-- Replace with URL and authentication if needed --> <server-url>http://localhost:8080/manager/text</server-url> <deploy-path>/moduleB</deploy-path> <deploy-un>tomcatscript</deploy-un> <deploy-pw>[email protected]</deploy-pw> </properties> </profile>

不要忘記添加到您的tomcat/conf/tomcat-users.xml這樣的:

<role rolename="manager-script"/> <role rolename="manager-jmx"/> <user username="tomcatscript" password="[email protected]" roles="manager-script, manager-jmx"/>

然後在終端,使用此:mvn tomcat7:[re]deploy -Pserver1

moduleA將被部署到http://localhost:8080/moduleA

moduleB將被部署到http://localhost:8080/moduleB

希望這有助於!

相關問題