5

私は継続的インテグレーションを行うためにしばらく maven2 と hudson を使用してきましたが、Eclipse と Maven はうまく連携できないことがわかりました。確かにプラグインはありますが、maven プロジェクトを eclipse が好むものにマッシュアップするのは面倒で、ビルド時間と単体テストが長すぎます。私は、アリもメイベンも関与しない純粋なEclipseプロジェクトに戻すことを検討しています。無限のプラグインと JavaRebel エージェントを使用すると、ビルド、デプロイ、テストのサイクルが非常に高速になります。ただし、自動化とテストも行いたいので、次のようにします。

Eclipse プロジェクトで継続的インテグレーションを使用するにはどうすればよいですか?

それを行うコマンドラインの方法はありますか?

すでにネイティブでサポートしているビルド サーバーはありますか?

4

3 に答える 3

4

ええ、Eclipse Maven2 プラグインは今のところがらくたです。Maven2 を使用することには多くの利点があるため、実際にはバランスが取れています。

私たちがしていることは、Eclipse を使用して開発し、Maven のみを使用して依存関係を管理することです。他のすべては、コマンド ラインで「mvn」を実行することによって行われます。独自の統合テスト プロジェクト (...-itest) にテストを保持し、継続的インテグレーション サーバーを使用して 2 フェーズでビルドを行います。最初に実際のコードをビルドし、2 番目のパスでビルドして -itest プロジェクトを実行します。(最初のパス (純粋なビルド) は通常非常に迅速であり、統合テストのビルド (テストの実行を伴う) には通常かなりの時間がかかります。)

mvn でテストを実行するためのコマンド ラインは次のとおりです。 mvn -o verify -Ditest

もちろん、親 pom で 'itest' プロファイルを定義する必要があります: 次のように言います:

<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>
于 2008-10-02T09:18:25.953 に答える
2

私はなんとか良い解決策を見つけました。MavenとEclipseを使用しているときに動作するように、無限大(Eclipseマーケットプレイスからインストールできます)を取得しました

Eclipse-> Project Properties-> Java Build Path-> Source で、「ソースフォルダーの出力フォルダーを許可する」というボックスのチェックを外します

これにより、プロジェクトで複数の出力パスを使用できるようになり、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>
于 2008-10-23T13:32:53.907 に答える
0

CruiseControlでEclipse+Antを使用してかなりの成功を収めました。自動化が必要な場合は、純粋なEclipse以上のものが必要になるでしょう。

CruiseControlは、ソース管理からプロジェクトのコピーを自動的にチェックアウトし、ビルドしてテストを実行し、その結果でWebアプリケーションを更新できます。私が最後に使ったのはかなり滑らかでしたが、それはずっと前のことです。

于 2008-10-08T20:21:06.240 に答える