Java Can';t运行包含许多项目的maven测试
我有很多java项目,每个项目都有maven构建。它们都Java Can';t运行包含许多项目的maven测试,java,eclipse,maven,junit,Java,Eclipse,Maven,Junit,我有很多java项目,每个项目都有maven构建。它们都安装很好 此外,我还有许多JUnit测试。这些测试可能依赖于其他项目,即来自项目a的测试可能会从项目B导入类 我的项目结构不好(所有的类都在src目录中,而不是src/main/java)。因此,当我运行mvn clean test时,没有要编译的源代码。如果我通过将所有的主类移动到src/main/java并将所有的测试移动到src/test/java来构建它,那么我会不断得到找不到symbol(引用不同项目中的类导入) 我尝试定义,使用
安装
很好
此外,我还有许多JUnit测试。这些测试可能依赖于其他项目,即来自项目a
的测试可能会从项目B
导入类
我的项目结构不好(所有的类都在src
目录中,而不是src/main/java
)。因此,当我运行mvn clean test
时,没有要编译的源代码。如果我通过将所有的主类移动到src/main/java
并将所有的测试移动到src/test/java
来构建它,那么我会不断得到找不到symbol
(引用不同项目中的类导入)
我尝试定义
,使用了许多不同的插件和配置文件
,还尝试将我的java配置
级别降低到1.7,但都没有效果
我甚至尝试过定义一个测试项目,它有一个包含许多模块的简单POM(要么只包含
,要么定义
,或者两者都包含),但即使在这种情况下-要么我没有要编译的源代码,找不到符号
,要么甚至包x.y不存在
(或者它进行编译,但试图将其包含在其他项目中却没有任何效果)
我可以运行一个包含其他项目类的测试吗?如何运行?也许您可以拥有和使用测试依赖项。我将解释如何实现这一点,希望它对您的项目有用
我有一个包含许多子项目(名为projectA、projectB等)的项目,每个子项目都有自己的测试。还有一个名为“core”的项目,带有包含公共类的jar打包。它们看起来像以下结构:
Main
|- core (jar)
|- projectA (war)
|- projectB (war)
不同项目上的所有测试都使用公共代码,这些代码最终放在“核心”项目测试类别上。
这就是我们如何管理maven 3.1.1上的依赖关系
Main也是一个具有自己的pom.xml的项目,仅供参考
Main(pom.xml):
4.0.0
com.mycompany.myproject
我的神器
1
聚甲醛
核心
项目A
项目B
...
在核心项目pom.xml中,我们提出:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>core</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>com.mycompany.myproject</groupId>
<artifactId>MyArtifact</artifactId>
<version>1.0</version>
</parent>
<build>
<pluginManagement>
<plugins>
<!-- Common test classes jar creation -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
...
4.0.0
核心
罐子
com.mycompany.myproject
我的神器
1
org.apache.maven.plugins
maven jar插件
2.5
试验罐
...
在其余的pom.xml项目中,我们将依赖项放在这个jar中:
<dependencies>
<!-- We put dependency with core.jar an test-core.jar -->
<dependency>
<groupId>com.mycompany.myproject</groupId>
<artifactId>core</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.mycompany.myproject</groupId>
<artifactId>core</artifactId>
<version>1.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
com.mycompany.myproject
核心
1
com.mycompany.myproject
核心
1
试验罐
测试
Eclipse警告此maven依赖关系,但它在使用maven从命令行运行测试时起作用
希望这有帮助。也许您可以拥有和使用测试依赖项。我将解释如何实现这一点,希望它对您的项目有用
我有一个包含许多子项目(名为projectA、projectB等)的项目,每个子项目都有自己的测试。还有一个名为“core”的项目,带有包含公共类的jar打包。它们看起来像以下结构:
Main
|- core (jar)
|- projectA (war)
|- projectB (war)
不同项目上的所有测试都使用公共代码,这些代码最终放在“核心”项目测试类别上。
这就是我们如何管理maven 3.1.1上的依赖关系
Main也是一个具有自己的pom.xml的项目,仅供参考
Main(pom.xml):
4.0.0
com.mycompany.myproject
我的神器
1
聚甲醛
核心
项目A
项目B
...
在核心项目pom.xml中,我们提出:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>core</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>com.mycompany.myproject</groupId>
<artifactId>MyArtifact</artifactId>
<version>1.0</version>
</parent>
<build>
<pluginManagement>
<plugins>
<!-- Common test classes jar creation -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
...
4.0.0
核心
罐子
com.mycompany.myproject
我的神器
1
org.apache.maven.plugins
maven jar插件
2.5
试验罐
...
在其余的pom.xml项目中,我们将依赖项放在这个jar中:
<dependencies>
<!-- We put dependency with core.jar an test-core.jar -->
<dependency>
<groupId>com.mycompany.myproject</groupId>
<artifactId>core</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.mycompany.myproject</groupId>
<artifactId>core</artifactId>
<version>1.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
com.mycompany.myproject
核心
1
com.mycompany.myproject
核心
1
试验罐
测试
Eclipse警告此maven依赖关系,但它在使用maven从命令行运行测试时起作用
希望这能有所帮助。你能发布一个包含测试的项目的pom和测试所依赖的项目的pom吗?这会让事情变得更清楚。你需要依赖于不同模块的测试类或源类吗?你能发布一个包含测试的项目的pom和测试所依赖的项目的pom吗?这会让事情变得更清楚。你需要依赖不同模块的测试类还是源类?Ran,你试过我的aproach吗?它适合你的需要吗?我明天会试一下,但告诉我-从你的结构来看,你似乎在Main下有项目核心、projctA和projectB。Main是一个项目,还是只是为了向我展示?这是正确的。Main也是一个有自己pom.cml的项目。我会更新我的答案以包含它。Ran,你试过我的aproach吗?它适合你的需要吗?我明天会试一下,但告诉我-从你的结构来看,似乎你在Main下有项目核心、项目JCTA和项目B。Main是一个项目,还是只是为了展示给我看?没错。Main也是一个有自己的项目拥有pom.cml。我会更新我的答案以包含它。