2015-04-24 31 views
0

为了自动在我们的系统中一些FitNesse的测试中,我需要基本上做到以下几点:在Maven antrun任务中配置classpath的最佳/最简单的方法?

  1. 在Maven构建的一切。
  2. 使用构建的代码启动服务器进程。
  3. 对服务器运行FitNesse测试。

这很好,除了在Maven集成测试阶段启动服务器。主要是,我不确定如何将项目类路径导入到java任务中; FitNesse Java任务工作正常,但不需要访问已编译的类。到目前为止,我有以下Maven配置,但是第一个Java执行失败,因为找不到该类。据推测,我需要这个任务来表现像surefire插件,并使用一个类路径与所有编译的项目和依赖关系。

<plugin> 
<artifactId>maven-antrun-plugin</artifactId> 
<version>1.8</version> 
<executions> 
    <execution> 
    <id>start-fitnesse-integration</id> 
    <phase>integration-test</phase> 
    <configuration> 
     <tasks> 
     <echo taskname="fitnesse" message="Starting Server..."/> 
     <java classname="com.xyz.ServerProcess" fork="true" failonerror="true"> 
      <jvmarg value="-Xmx1024m"/> 
      <!-- etc. --> 
     </java> 

     <echo taskname="fitnesse" message="Starting Fitnesse tests..."/> 
     <java classname="fitnesseMain.FitNesseMain" classpathref="maven.runtime.classpath" fork="true" failonerror="true"> 
      <!-- FitNesse command - works OK --> 
     </java> 
     </tasks> 
    </configuration> 
    <goals> 
     <goal>run</goal> 
    </goals> 
    </execution> 
</executions> 
</plugin> 

应如何为第一个Java任务指定类路径?替代解决方案的想法也受到欢迎

+0

我会建议看看[maven-dependency-plugin](http://maven.apache.org/plugins/maven-dependency-plugin/build-classpath-mojo.html),它提供了一种方法也可以为不同的作用域获取类路径。此外还有一个[fitness-maven-launcher-plugin](https://code.google.com/p/fitnesse-launcher-maven-plugin/),它可能也有帮助。 – khmarbaise

+0

你在问第一个java任务,对吗?所以你基本上是问如何从Maven运行(使用Ant)开始你自己的服务器进程? –

+0

@Fried Hoeben - 是的,这是正确的。 – BarrySW19

回答

0

我会建议之一:

  1. 制作独立的构建脚本(可能与第三两者结合)来创建部署和启动服务器,另一个运行FitNesse的测试,并就该报告(后者很容易实现,使用确保运行和单元测试@RunWith(FitNesseRunner.class))。
  2. 让您的FitNesse运行也启动服务器(在SuiteSetup中)并在测试套件(在TearDown中)之后停止它。这样FitNesse测试集就是自包含的,并且可以独立于构建脚本执行(例如,通过它的wiki交互式地执行)。
0

我最终得到这个结果的方式是使用exec-maven-plugin以exec:exec目标(即可执行文件为'java')执行新的JVM。这允许您在参数列表中包含< classpath/>标记。这确实意味着被执行的类需要负责在后台启动服务器本身,然后调用FitNesse套件,但至少它可以工作。