gpt4 book ai didi

java - 无法运行包含许多项目的 Maven 测试

转载 作者:太空宇宙 更新时间:2023-11-04 13:28:55 31 4
gpt4 key购买 nike

我有很多 java 项目,每个项目都有它的 Maven 构建。他们都是install美好的。

此外,我还有很多 JUnit 测试。这些测试可能取决于其他项目,即来自 Project A 的测试可以从 Project B 导入一个类.

我的项目结构不佳(所有类都位于 src 目录中,而不是 src/main/java )。所以当我运行mvn clean test时我得到No sources to compile 。如果我通过将所有主类移至 src/main/java 来很好地构建它以及所有测试 src/test/java我不断收到cannot find symbol (引用不同项目中的类的导入)。

我尝试定义 <testSourceDirectory> ,使用了许多不同的pluginsprofiles还尝试降低我的java configuration等级到1.7,都没有用。

我什至尝试定义一个 TestProject,它有一个带有许多模块的简单 POM(要么只定义 <modules> ,要么定义 <dependencies> 或两者兼而有之),但即使如此 - 我要么得到 No sources to compile , cannot find symbol甚至 package x.y does not exist (或者它可以编译,但尝试将其包含在其他项目中则不起作用)。

我可以运行涉及其他项目中的类的测试吗?怎么办?

最佳答案

也许您可以拥有并使用测试依赖项。我将解释我如何实现这一目标,希望它对您的项目有用。

我有一个包含许多子项目(名为projectA、projectB等)的项目,每个子项目都有自己的测试。还有一个名为“core”的项目,其 jar 包包含公共(public)类。它们看起来像以下结构:

Main 
|- core (jar)
|- projectA (war)
|- projectB (war)

不同项目的所有测试都使用最终放置在“核心”项目测试类上的通用代码。这就是我们管理 Maven 3.1.1 上的依赖关系的方式。

仅供引用 Main也是一个项目,有自己的pom.xml

主要(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>
<groupId>com.mycompany.myproject</groupId>
<artifactId>MyArtifact</artifactId>
<version>1.0</version>
<packaging>pom</packaging>

<properties>
</properties>

<repositories>
</repositories>

<modules>
<module>core</module>
<module>projectA</module>
<module>projectB</module>
</modules>
...
</project>

在核心项目 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>
...

在项目的其余 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>

Eclipse 会警告此 Maven 依赖项,但在使用 Maven 从命令行运行测试时它可以正常工作。

希望这有帮助。

关于java - 无法运行包含许多项目的 Maven 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32377667/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com