【问题标题】:How do I use continuous integration with an Eclipse project?如何在 Eclipse 项目中使用持续集成?
【发布时间】:2008-10-02 07:37:10
【问题描述】:

我一直在使用 maven2 和 hudson 进行持续集成,但我发现 Eclipse 和 Maven 不能很好地配合使用。当然有一个插件,但是将 maven 项目混搭成 eclipse 喜欢的东西,构建时间和单元测试太长了。 我正在考虑切换回一个没有 ant 和 maven 的纯 Eclipse 项目。使用无限的插件和可能的 JavaRebel 代理,它会给我一个非常快速的构建-部署-测试周期。但是我仍然希望有自动和测试,所以:

如何在 Eclipse 项目中使用持续集成?

有没有命令行方式来做到这一点?

是否有已经原生支持它的构建服务器?

【问题讨论】:

    标签: eclipse continuous-integration build-automation infinitest javarebel


    【解决方案1】:

    是的,Eclipse Maven2 插件现在很垃圾。但我建议你坚持下去,使用 Maven2 有很多好处,所以它实际上是平衡的。

    我们所做的是,我们使用 Eclipse 来开发并且只使用 Maven 来管理依赖关系。其他一切都是通过在命令行上运行“mvn”来完成的。我们将测试保存在他们自己的集成测试项目(...-itest)中,并让持续集成服务器分两个阶段进行构建,首先构建实际代码,然后通过构建并运行 -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>
    

    【讨论】:

    • 有趣的想法,我没想过把它分成两个项目。我通常是 maven 的忠实粉丝,但我注意到构建/测试周期需要一点时间。我猜这个想法可以加快速度。
    【解决方案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>
    

    【讨论】:

      【解决方案3】:

      我在使用带有 CruiseControl 的 Eclipse + Ant 方面取得了相当大的成功。如果您想要自动化,您可能需要的不仅仅是纯 Eclipse。

      CruiseControl 可以自动从源代码管理中检出您的项目副本、构建它、运行测试,然后使用结果更新 Web 应用程序。上次我用的时候还挺流畅的,但那是很久以前的事了。

      【讨论】:

        猜你喜欢
        • 2017-01-04
        • 2010-09-17
        • 1970-01-01
        • 2011-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-06
        相关资源
        最近更新 更多