在Maven antrun任务中配置类路径的最佳/最简单方法?

时间:2015-04-24 13:20:00

标签: java maven classpath fitnesse maven-antrun-plugin

为了在我们的系统中自动执行一些FitNesse测试,我需要基本上执行以下操作:

  1. 在Maven中构建所有内容。
  2. 使用构建的代码启动服务器进程。
  3. 针对服务器运行FitNesse测试。
  4. 除了在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任务指定类路径?替代解决方案的想法也欢迎。

3 个答案:

答案 0 :(得分:0)

我会建议:

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

答案 1 :(得分:0)

我最终得到的方法是使用exec-maven-plugin以exec:exec目标执行新的JVM(即可执行文件是&#39; java&#39;)。这允许您包含&lt; classpath /&gt;参数列表中的标记。这意味着执行的类需要负责在后台启动服务器本身,然后调用FitNesse套件,但至少这一切都有效。

答案 2 :(得分:0)

我不得不在不同的 Maven 文件夹结构下处理有关 cucumber-jvm 的问题。为了编译测试,除了 maven-antrun-plugin 配置,我需要使用 build-helper-maven-plugin:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>build-helper-maven-plugin</artifactId>
  <version>3.2.0</version>
  <executions>
    <execution>
      <id>add-integration-test-sources</id>
      <phase>generate-test-sources</phase>
      <goals>
        <goal>add-test-source</goal>
      </goals>
      <configuration>
        <sources>
          <source>src/test-functional/java</source>
        </sources>
      </configuration>
    </execution>
    <execution>
      <id>add-integration-test-resources</id>
      <phase>generate-test-resources</phase>
      <goals>
        <goal>add-test-resource</goal>
      </goals>
      <configuration>
        <resources>
          <resource>
            <filtering>true</filtering>
            <directory>src/test-functional/resources</directory>
          </resource>
        </resources>
      </configuration>
    </execution>
  </executions>
</plugin>