java 我的Maven模块无法在其他Maven模块中找到类,尽管我将其设置为依赖项

4zcjmb1e  于 2022-12-10  发布在  Java
关注(0)|答案(1)|浏览(174)

我有两个Maven模块,一个名为tests,另一个名为ws-ejb
tests pom.xml中,我已经将ws-ejb设置为依赖项,这样我就可以在测试中使用EJB。
这是我的tests maven模块的pom.xml的缩短版本:

<parent>
   <artifactId>myproj</artifactId>
   <groupId>myproj</groupId>
   <version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<artifactId>tests</artifactId>

<dependencies>
  <dependency>
     <groupId>myproj</groupId>
     <artifactId>ws-ejb</artifactId>
     <version>1.0-SNAPSHOT</version>
     <scope>test</scope> 
     <type>war</type>
   <dependencies>
<dependency>
...
<!-- other dependencies in the file: junit and javax.ejb -->

<build>
  <plugins>
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <executions>
           <execution>
              <id>tests</id>
              <phase>integration-test</phase>
              <goals>
                 <goal>test</goal>
              </goals>
           </execution>
        </executions>
      </plugin>        
   </plugins>
 </build>

但是,当我运行测试时,我收到一个编译错误,指出找不到我的bean,但我将它作为一个依赖项,我的IDE不会抱怨缺少bean,但Maven会抱怨:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:testCompile (default-testCompile) on project tests: Compilation failure: Compilation failure:
[ERROR] /home/r/projects/myproj/trunk/tests/src/test/java/com/myproj/MyTest.java [3,19]package com.myproj.beans does not exist

com.myproj.beans确实存在于maven模块ws-ejb中,我已经在tests模块中将其设置为依赖项。

编辑

这是MyTest.java,位于src/test/java/com/myproj/MyTest.java下的tests maven模块中

package com.myproj;

import com.myproj.beans.MyBean; // compilation error here. If I remove this line it works and the test is run! 
//MyBean is located at `ws-ejb` maven module under src/main/java/com.myproj.beans
import javax.ejb.EJB;
import org.junit.Test;

public class MyTest {
    @Test
    public void test() {System.out.println("Print something...");}
}
yqlxgs2m

yqlxgs2m1#

由于您没有发布任何示例代码,我只能猜测。但我的猜测是您的测试代码不在您项目的test文件夹中。那么这意味着什么呢?这意味着maven只是试图编译和/或运行您的测试项目,这导致了异常。尝试从您的依赖项中删除scope属性,然后重试。只有在使用test-文件夹,例如JUnit。如果您的代码在“main”文件夹中,这将不起作用,因为在运行时无法访问依赖项。如果有什么不清楚的地方,或者您有一些我没有得到的信息,请注解:)
此致
编辑:进一步说明一下:我强烈建议在工件中为给定工件编写测试代码。这样,如果测试失败,您将在有错误的工件中得到一个maven构建失败。要了解这是如何工作的,您可以为一个特定的类添加一个JUnit测试(大多数IDE将支持您这样做)
编辑2:好的,我做了一个快速的谷歌搜索:this article可以提供如何使用这些类的答案。我希望这能起到作用:)

相关问题