Как использовать непрерывную интеграцию с проектом Eclipse? - PullRequest
5 голосов
/ 02 октября 2008

Я некоторое время использовал maven2 и hudson для непрерывной интеграции, но обнаружил, что Eclipse и Maven не очень хорошо играют вместе. Конечно, есть плагин, но сложно сделать проект maven похожим на то, что затмевает, а время сборки и юнит-тестирование слишком длинные. Я подумываю о том, чтобы вернуться к проекту чистого затмения без муравья и мавена. С бесконечным плагином и, возможно, с агентом JavaRebel, я бы получил очень быстрый цикл сборки-развертывания-тестирования. Однако я все еще хотел бы иметь автоматическое и тестирование, так что:

Как использовать непрерывную интеграцию с проектом Eclipse?

Есть ли способ сделать это из командной строки?

Существует ли сервер сборки, который уже поддерживает его изначально?

Ответы [ 3 ]

4 голосов
/ 02 октября 2008

Да, плагин Eclipse Maven2 пока дерьмо. Но я бы посоветовал вам повесить трубку, так как использование Maven2 приносит много пользы, так что он действительно уравновешивает.

Что мы делаем, так это то, что мы используем Eclipse для разработки и используем Maven только для управления зависимостями. Все остальное делается путем запуска «mvn» в командной строке. Мы храним тесты в их собственных проектах интеграционных тестов (... - itest) и располагаем сервером непрерывной интеграции, который выполняет сборку в 2 этапа, сначала собирает реальный код, а затем выполняет сборку и выполняет проекты -itest. (Первый проход (чистая сборка) обычно очень быстрый, а сборка интеграционных тестов (с запуском тестов) обычно занимает довольно много времени.)

Вот командная строка для запуска mvn тестов: mvn -o verify -Ditest

Конечно, вам нужно определить профиль 'itest' в вашем родительском pom: Скажи так:

<profiles>
  <profile>
    <id>integration-test</id>
    <activation>
      <property>
        <name>itest</name>
      </property>
    </activation>
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <executions>
            <execution>
              <id>itest</id>
            </execution>
          </executions>
          <configuration>
            <testSourceDirectory>src/main</testSourceDirectory>
            <testClassesDirectory>target/classes</testClassesDirectory>
            <forkMode>once</forkMode>
          </configuration>
        </plugin>
      </plugins>
    </build>
  </profile>
</profiles>
2 голосов
/ 23 октября 2008

Мне удалось найти хорошее решение. Я просто получил Infinitest (может быть установлен с торговой площадки Eclipse) для работы при использовании maven и eclipse

В Eclipse-> Свойства проекта-> Путь сборки Java-> Источник снимите флажок под названием: «Разрешить вывод» папки для исходных папок "

Это позволит вашему проекту иметь более одного выходного пути, и Eclipse начнет сообщать о тестовых классах как о части пути к классам. Infinitest теперь находит его и запускает тесты!

Все, что я сделал, это использовал официальный плагин Maven Eclipse и добавил это в мой POM

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.5</version>
        <!-- <scope>provided</scope> -->
    </dependency>

    <dependency>
        <groupId>org.infinitest</groupId>
        <artifactId>infinitest</artifactId>
        <scope>test</scope>
        <version>4.0</version>
    </dependency>

</dependencies>
0 голосов
/ 09 октября 2008

Я добился большого успеха, используя Eclipse + Ant с CruiseControl. Если вам нужна автоматизация, вам, вероятно, понадобится нечто большее, чем просто Eclipse.

CruiseControl может автоматически извлекать копию вашего проекта из системы управления версиями, создавать ее, запускать тесты, а затем обновлять веб-приложение с результатами. В прошлый раз, когда я его использовал, это было довольно гладко, но это было давно.

...