我已经使用 maven2 和 hudson 进行持续集成一段时间了,但我发现 Eclipse 和 Maven 不能很好地协同工作。当然有一个插件,但是将 maven 项目混合成 eclipse 喜欢的东西并且构建时间和单元测试太长是很古怪的。我正在考虑切换回一个没有蚂蚁和专家的纯日食项目。使用无限的插件和可能的JavaRebel代理,它将给我一个非常快速的构建-部署-测试周期。但是我仍然希望拥有自动和测试,因此:
如何使用与 Eclipse 项目的持续集成?
有命令行方法吗?
是否有已经本机支持它的构建服务器?
是的,Eclipse Maven2插件现在是垃圾。但是我建议你坚持下去,使用Maven2有很多好处,所以它实际上是平衡的。
我们所做的是使用 Eclipse 进行开发,并且只使用 Maven 来管理依赖项。其他一切都通过在命令行上运行"mvn"来完成。我们将测试保存在他们自己的集成测试项目 (...-itest) 中,并让持续集成服务器分 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>
我设法找到了一个很好的解决方案。我只是在使用 maven 和 eclipse 时让 infinitest(可以从 Eclipse 市场安装)来工作
在 Eclipse->Project Properties->Java Build Path->Source 中,取消选中名为"允许输出"的框源文件夹的文件夹"
这将使您的项目具有多个输出路径,然后 Eclipse 将开始将测试类报告为类路径的一部分。无限现在找到它并开始运行测试!
我所做的只是使用官方的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>
我在使用 Eclipse + Ant 和 CruiseControl 时取得了相当大的成功。 如果你想要自动化,你可能需要的不仅仅是纯粹的Eclipse。
CruiseControl 可以从源代码管理中自动签出项目的副本,生成它,运行测试,然后使用结果更新 Web 应用程序。 我上次使用它很光滑,但那是很久以前的事了。