首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试阶段之前的Maven运行类: exec-maven-plugin exec:java不执行类

测试阶段之前的Maven运行类: exec-maven-plugin exec:java不执行类
EN

Stack Overflow用户
提问于 2014-05-14 16:07:27
回答 3查看 7.4K关注 0票数 5

我正在一个Jenkins盒上运行用Maven构建的jUnit4测试。我的目标是在执行测试之前恢复一个测试数据库。

看起来,执行maven插件是可行的,但我无法让它运行。有什么指示吗?虽然有很多例子,但mojo站点上的文档非常薄。

我目前需要运行的课程是:

MyProject.src.test.java._tools.BuildTestEnvironment.java

我的pom.xml包括:

代码语言:javascript
复制
<pluginManagement>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>            
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.3</version>
            <executions>
                <execution>
                    <id>build-test-environment</id>
                    <phase>generate-test-resources</phase>            
                    <goals>
                        <goal>java</goal>            
                    </goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>src.test.java._tools.BuildTestEnvironment</mainClass>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>

在詹金斯查一下,什么都没发生。如果我在本地运行它,我就会得到

我尝试过的东西,但都没有成功:

  1. 运行Jenkins的构建:什么都不会发生。该项目构建并开始运行测试,但未运行我的类。
  2. 在本地运行构建:与Jenkins中的结果相同。没什么好惊讶的。
  3. 在本地运行生成-测试-资源: ClassNotFoundException。ie:mvn exec:java生成-测试-资源 java.lang.ClassNotFoundException: src.test.java._tools.BuildTestEnvironment

  1. 将类编译成一个jar,并将其添加到我的pom中。

更新:

在阅读了@ppuskar的评论之后,我尝试将buildxxx类移动一下。在将它移到src.main.java._tools.BuildTestEnvironment之后,我仍然收到了类似的消息。这是我的构建日志,以防有帮助:

调试调用: test.java._tools.BuildTestEnvironment.main() 调试插件依赖项将被排除。 调试项目依赖项将包括在内。 调试收集的项目工件joda-time:joda-time:jar:2.3,net.sf.jt 400:jar:6.7,junit:junit:jar:4.11:编译,org.hamcrest:hamcrest-core:jar:1.3: com.fasterxml.jackson.core:jackson-core:jar:2.3.0:compile,com.fasterxml.jackson.core:jackson-databind:jar:2.3.0:compile,com.fasterxml.jackson.core:jackson-annotations:jar:2.3.0:compile,Org.hamcrest:hamcrest-all:jar:1.3: org.apache.logging.log4j:log4j-api:jar:2.0-rc1:compile,org.apache.logging.log4j:log4j-core:jar:2.0-rc1:compile收集的项目类路径C:\workspace\VSP_UnitTest\target\classes添加到类路径: file:/C:/workspace/VSP_UnitTest/target/classes/ 调试添加项目依赖项工件:joda-到类路径的时间 调试添加项目依赖项工件: jt400到类路径 调试添加项目依赖工件: junit到类路径 调试添加项目依赖工件: hamcrest-core到类路径 调试添加项目依赖项工件: jackson-core到类路径 调试添加项目依赖项工件: jackson-databind到类路径 调试添加项目依赖工件:jackson-对类路径的注释 调试添加项目依赖工件: hamcrest-all to classpath 调试向类路径添加项目依赖项工件: log4j-api 调试添加项目依赖项工件: log4j-core到类路径 在线程Threadtest.java._tools.BuildTestEnvironment.main(),5,test.java._tools.BuildTestEnvironment java.lang.ClassNotFoundException: test.java._tools.BuildTestEnvironment上进行调试连接 在java.net.URLClassLoader$1.run(URLClassLoader.java:366) 在java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在java.security.AccessController.doPrivileged(Native方法中) 在java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在java.lang.ClassLoader.loadClass(ClassLoader.java:357) 在org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:281) 在java.lang.Thread.run(Thread.java:724) 信息 信息构建失败 信息 信息总时间: 2.602秒 信息完成时间: 2014-05-15T14:38:50-05:00 信息最终内存:12m/152米 信息

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-14 17:10:22

尝试将BuildTestEnvironment.javasrc.test.java._tools移动到src.main.java._tools,即您的类将是src.main.java._tools.BuildTestEnvironment

我试着运行你提供的场景。正如您所说的,它失败了,但是我将java文件从测试转移到main .它运行:)

干杯:)

票数 4
EN

Stack Overflow用户

发布于 2015-07-09 13:07:35

我想把这个作为评论来回应Rebzie的评论,但我没有这个名声。

但是,在主配置中有测试配置。

Exec Maven插件支持更改类路径作用域范围,以便您可以使用测试范围内的资源而不必将它们从测试包中移出,如下所示:

代码语言:javascript
复制
<configuration>
    <mainClass>src.test.java._tools.BuildTestEnvironment</mainClass>
    <classpathScope>test</classpathScope>
</configuration>

这为测试设置代码保留在测试资源中提供了一个干净的解决方案。

票数 12
EN

Stack Overflow用户

发布于 2018-03-22 11:39:27

我在尝试类似的东西,如果有人偶然发现,我就把我的发现留在这里。我计划在测试中有一个类来创建一些测试资源,然后运行实际的测试。

核心问题是maven阶段test-compile运行在generate-test-resources之后。测试分支中的代码在执行时尚未编译,因此exec-plugin没有找到已编译的类。

我的临时解决方案是将exec附加到阶段process-test-classes

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23659829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档