簡體   English   中英

Maven 2多模塊pom

[英]Maven 2 multi module pom

我最近開始將我的項目從ant遷移到maven。 我的應用程序中有兩個模塊,我可以使用maven構建。

現在我有自動化測試項目,它使用Web Driver來測試UI功能。 我想用maven做的是建立兩個模塊戰並將它們部署到tomcat上。 然后對它們運行自動化測試,並在自動化測試通過后傳遞構建。 我已經像這樣配置了我的pom(只提到重要部分):

<packaging>pom</packaging>
<modules>
        <module>../module1</module>
        <module>../module2</module>
</modules>

現在兩個項目都進行構建和部署,但它不運行自動化測試。 我之所以認為包裝類型是POM。 但如果我把它改成戰爭就會開始拋出錯誤。

我可以考慮為自動化和父pom創建第三個pom,以便將其作為模塊包含在內。 但我在想這是否是正確的方法。 它應該是一個非常常見的場景,而且maven應該直接支持它。

(...)自動化模塊是用於測試UI的基於WebDriver的自動化測試。 這取決於網絡戰,但沒有包依賴。 我正在使用貨物maven插件部署到tomcat。 我想在運行自動化測試之前立即從源代碼構建Web戰爭,然后在tomcat上部署然后運行測試。 我可以使用ant build完成所有這些但無法使用maven

這絕對可行(我已經做了很多次)。 但我不確定你當前的項目結構(尤其是測試所在的位置)。

這是我建議的結構:

.
├── functests
│   ├── pom.xml            // here we configure maven to run cargo & it tests
│   └── src
│       └── it
│           ├── java
│           │   └── ...    // functional tests will go here
│           └── resources
├── pom.xml                // aggregating pom
└── mywebapp               // the application under test
    ├── pom.xml
    └── src
        ├── main
        │   ├── java
        │   ├── resources
        │   └── webapp
        └── test
            ├── java
            └── resources

有關pom設置的詳細信息,請查看Maven,Cargo和Selenium的功能測試 ,它包含所需的所有詳細信息。

我不認為帶有共享集成測試模塊的2個war模塊是一種非常常見的場景。

但是,你可以使用Hudson

  • 在Hudson中設置一個工作來部署父級pom,這將導致戰爭模塊按照您目前的方式進行部署。
  • 在上一個作業成功時,觸發另一個作業來運行集成測試。

您可能希望使用配置文件來激活集成測試,或者更具體地說是防止在第一個作業期間執行集成測試。

我今年早些時候在大約一個小時內建立了一個基本的Hudson服務器。
Hudson直接支持maven構建,並為您的項目maven站點提供位置,包括所有質量報告等。
您還可以將Hudson配置為“監視”SCM,並在識別提交時啟動構建。

“我能想到創造第三個pom”
你只有兩個POM嗎? 每個項目/模塊都需要自己的POM。

在這里查看有關maven集成測試的更多信息: http//docs.codehaus.org/display/MAVENUSER/Maven+and+Integration+Testing

編輯:我不明白你的項目布局是什么樣的。 但我想它應該看起來像這樣:

文件結構

myWebApp/
    pom.xml
    myWebApp-web/
        pom.xml
    myWebApp-integration-tests/
        pom.xml

/myWebApp/pom.xml

<packaging>pom</packaging>
<modules>
    <!-- packaging: war; here are the sources and unit tests -->
    <module>myWebApp-web</module>

    <!-- packaging: java; here are the integration tests -->
    <module>myWebApp-integration-tests</module>
</modules>

通過此設置, /myWebApp/mvn deploy將執行以下步驟:

  1. 構建根項目(什么也不做,因為沒有源)
  2. 構建myWebApp-web
  3. 部署myWebApp-web(必須在/myWebApp/myWebApp-web/pom.xml配置)
  4. 在myWebApp-integration-tests中執行測試

這應該做你想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM