尝试执行maven命令行构建时出现以下错误:
[错误] /trunk/application/web/src/test/java/com/morrislgn/ec/dms/controller/MyControllerTest.java:96:0::0 BuilderType无法解析为某个类型 引起:org.codehaus.mojo.aspectj.CompilationFailedException:编译器错误: 导入静态错误com.morrislgn.ec.dms.common.domain.BuilderType。*;
但是,当我从Eclipse中运行此测试类时,这些测试按预期运行。我已经查看了依赖项,并将常见项目作为一个依赖项,添加到了类路径等,没有任何乐趣。
是否有人对可能导致此问题的原因有任何其他想法?
提前致谢,
莫里斯
答案 0 :(得分:0)
我认为你需要对aspectj插件配置有某种依赖性。您需要的那种取决于丢失的BuilderType类应该来自哪里。如果你能解释某人可能更具体。请参阅the plugin docs,尤其是here和here(假设您正在编译测试 - 请参阅编译目标。我不是Aspectj用户 - 如果有人读这个是谁,请称重!
请发布你的pom的相关部分,并解释BuilderType应该来自哪里。
答案 1 :(得分:0)
好的,找到了解决方案。
上面提到的builderClass是在我的一个常见项目中的src \ test \ main下。因此,它没有包含在普通的罐子里。
我有一个依赖普通jar的web项目,而在其测试中使用了BuilderType。在Eclipse中,所有这些都可以解决,因为它似乎能够将所有东西编织在一起。
使用maven从命令行构建是不同的,因为这依赖于jar文件而不是java文件。
要解决此问题,测试类jar文件已添加到POM中用于公共项目的构建说明中:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>jar_it</id>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
然后在Web项目中添加了依赖项,以便它可以使用此jar。
<dependency>
<groupId>group.id</groupId>
<artifactId>common</artifactId>
<version>${project.version}</version>
<scope>test</scope>
<classifier>tests</classifier>
</dependency>
完成工作。 :)