Maven 2 многомодульный пом - PullRequest
3 голосов
/ 07 октября 2010

Я недавно начал переносить мой проект с муравья на мавена. У меня есть два модуля в моем приложении, которые я могу построить с помощью Maven.

Теперь у меня есть проект автоматизированных тестов, который использует веб-драйвер для тестирования функциональности пользовательского интерфейса. То, что я пытаюсь сделать с помощью maven, это собрать обе модульные войны и развернуть их на tomcat. Затем запустите для них тесты автоматизации и пройдите сборку, если тестирование автоматизации пройдет. Я настроил мой pom так (просто упомянув важную часть):

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

Сейчас оба проекта собираются и развертываются, но тесты автоматизации не выполняются. Причина, по которой я думал, заключается в том, что тип упаковки - POM. Но если я поменяю его на войну, он начнет выдавать ошибку.

Я могу подумать о создании третьего модуля для автоматизации и родительского модуля, чтобы включить его в качестве модуля. Но я думаю, что это правильный путь. Это должен быть очень распространенный сценарий, и maven должен поддерживать его напрямую.

Ответы [ 3 ]

4 голосов
/ 08 октября 2010

(...) модуль автоматизации - это автоматизированные тесты на основе WebDriver для тестирования пользовательского интерфейса.Это зависит от веб-войны, но нет зависимости от пакета.Я внедряю в Tomcat, используя плагин Cargo Maven.Я хочу создавать веб-войны из исходных текстов, на лету непосредственно перед запуском тестов автоматизации, затем развернуть их на tomcat и запустить тесты.Я могу сделать все это используя сборку муравья, но не могу использовать 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 ,он содержит все необходимые данные.

1 голос
/ 07 октября 2010

Я не думаю, что 2 военных модуля с общим модулем тестирования интеграции - очень распространенный сценарий.

Однако, вы можете заставить это работать с Hudson .

  • Создайте задание в Гудзоне для развертывания pom родительского уровня, что приведет к развертыванию военных модулей, как у вас сейчас.
  • При успешном выполнении предыдущего задания, триггердругое задание для запуска интеграционных тестов.

Возможно, вы захотите использовать profile для активации интеграционного тестирования или, более конкретно, для предотвращения выполнения интеграционных тестов во время первого задания.

Ранее в этом году я установил базовый сервер Hudson примерно за час.
Hudson напрямую поддерживает сборки maven, а также предоставляет местоположение для сайта maven вашего проекта, включая все отчеты о качестве.и т. д.
Вы также можете настроить Hudson так, чтобы он «наблюдал» за вашим SCM и инициировал сборку, когда он идентифицирует коммит.

0 голосов
/ 07 октября 2010

«Я могу подумать о создании третьего пом»
У вас есть только два ПОМ?Каждый проект / модуль нуждается в своем собственном 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-интеграции-tests

Это должно делать то, что вы хотите.

...