2012-04-17 39 views
2

我有一個多模塊maven項目,並且我創建了一個依賴於其他3個模塊的新模塊。 (我已經有一個產生.war文件web應用程序的Maven模塊,現在我需要這個)使用maven生成生產就緒輸出

該模塊的輸出是一個.jar,它有一些資源也分別是:

  1. 春天上下文XML文件
  2. 屬性文件

現在我想產生一個生產準備文件夾,這樣我就可以把它上傳到我的服務器。我希望maven能爲我做這件事。

我需要以下佈局:

myjar.jar 
/libs/ (the 3 other maven modules that are dependancies) 
/resources 

此外,也有一些通用的依賴關係,我父母的pom.xml有像SLF4J/log4j的/我還需要打包。

這將是冷靜,如果我可以添加一個開關MVN將產生此類似:

mvn clean install production 

我打算通過命令行我的服務器上運行此。

+0

考慮使用本[Q&A]討論的更標準化的生產文件夾結構(http://stackoverflow.com/questions/10151458/building-complete-application-folder-with-maven/10152209#10152209)。 – yorkw 2012-04-17 21:55:58

回答

2

@puce是正確的,你可能是最好使用Assembly Plugin。你無法輕易做到的就是爲maven添加另一個生命週期「生產」。如果您有時間可以編寫插件來執行此操作,但最好使用名爲「production」或「prod-deploy」的配置文件,以便在服務器上啓用應用程序。

mvn clean install -Pprod-deploy 

一件事與Maven要記住的是,這是在建設項目中使用它的約定非常好,但它是相當糟糕的劇本其實事情發生的構建生命週期的出方。

我曾多次使用外部腳本工具,如ant/python/bash和groovy,首先使用mvn運行構建,然後以更自然的語言編寫腳本部署。

+0

謝謝。是否有可能從我的其他模塊櫻桃挑選一個文件,並將其添加到我的lib文件夾? – Blankman 2012-04-17 20:35:31

+1

不是真的,嚴格來說你只應該引用maven項目的二進制輸出,即jar文件。您可以使用依賴插件獲取這些內容。 – 2012-04-17 20:37:45

+1

@Blankman您可以使用maven-dependency-plugin的unpack-dependencies目標從工件中提取資源。然後你可以將它包含在你的程序集中。 – Puce 2012-04-17 21:44:13

0

Maven的意圖是在生產意義上構建不部署。爲此,我會推薦像廚師或木偶這樣的東西。從技術角度來看,它當然可以通過Maven處理這些事情。還有什麼可以建立像詹金斯這樣的CI解決方案。此外,可以從Jenkins運行腳本來執行生產部署。