繁体   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