2011-05-17 36 views
2

我的webapp主要包含兩個工件,java-server.jar和js-client.war。兩者都被聚合/覆蓋並獲得目標環境的附加屬性文件。最後,我得到了戰爭檔案。創建webapp war發佈'maven way'

一些war文件是使用tomcat進行部署的:通過腳本部署一些文件,但在這一點上應該沒有關係。

有幾件事情我不和我的做法一樣:

  • 服務器和客戶端發佈使用Maven釋放小插件,最終的Web應用程序是沒有的。
  • 只是通過最終的戰爭文件,我無法確定它是由哪個服務器構建的。
  • 我通常需要同時使用多個客戶端/服務器組合:當我使用穩定版本構建測試版服務器時,每晚構建服務器應使用最新的快照。

如何維護,發佈和部署(以maven回購)stable/beta webapps?如何維護目標服務器特定的配置設置?你如何保持不同的版本?你有很多分支機構嗎?

謝謝,揚

+0

這兩個項目都有共同的父母POM項目嗎? – 2011-05-17 09:39:17

回答

0

,我可以推薦使用構建服務器一樣hudson。它有maven和rcs的支持。 您可以指定要構建的源代碼的哪個分支以及要執行哪個maven目標。

我們還使用hudson將構建部署到我們的Web服務器。

+0

我的問題不是如何開始構建,而是如何配置用於構建不同目標平臺的maven和subversion。 – Jan 2011-05-22 20:12:01

2

我在做什麼用詹的額外的Maven構建步驟,每次構建後執行

tomcat:deploy 

。使用正確的maven配置文件,將構建指向我們的開發服務器。然後,當我們想要推送到分段時,我們使用maven發佈插件(再次與Jenkins)創建一個版本號不是快照的版本。假設我們然後釋放2.0beta3到分期。這與像做:

tomcat:deploy -P staging-deploy 

配置文件,然後確保我們推到臨時服務器,而不是開發服務器的用POM條目是這樣的:

<profile> 
     <id>deploy-staging</id> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>tomcat-maven-plugin</artifactId> 
        <configuration> 
         <server>tomcat-staging</server> 
         <url>http://tomcat-staging.internal:${tomcat-staging.port}/manager/text</url> 
         <path>${tomcat.path}</path> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 

最後,從分期住越來越完全在maven和jenkins之外完成。我只是不相信行家不:-)

0

我的情況是不是和你的一樣複雜的突破,所以我只能回答這個問題:

你如何保持目標服務器的具體配置設置?

我嘗試外部化所有配置,以便部署完全相同的WAR文件以stage/prod。我使用Spring的上下文:屬性佔位符標籤。 WAR中有「默認」屬性文件,這些文件被/etc/app/*.properties(Windows上的c:/ etc/app/*。屬性)中的屬性覆蓋。

至於實際部署,我目前手動上傳WAR文件,但計劃在不久的將來將其自動化。

+0

也是一個可能的解決方案。但在目標系統上的svn與configfiles配置文件...我不知道什麼更好。 – Jan 2011-08-19 10:46:24

+0

我在WAR中放置了合理的默認值,並允許它們在目標系統上被覆蓋。這也允許我更改屬性並重新啓動應用程序服務器,而無需構建/部署應用程序。我發現這對我的經歷是一個巨大的好處,但我相信有人會爭辯另一方。 – Luke 2011-08-19 15:47:00