Maven/Eclipse 尝试用主代码编译测试

Posted

技术标签:

【中文标题】Maven/Eclipse 尝试用主代码编译测试【英文标题】:Maven/Eclipse Attempts to Compile Tests with Main Code 【发布时间】:2019-10-08 06:25:38 【问题描述】:

我正在使用 maven 插件 m2e (1.8.3.20180227) 和 java 8 (jdk1.8.0_172) 运行 eclipse 氧气(版本 4.7.3a)

更新 eclipse 到版本:2019-03 (4.11.0),m2e 1.11.0.20190220-2119,java 版本不变。 相同的行为仍然存在。

我有一个带有模块的项目。 该模块有/src/main/javasrc/test/java junit 依赖是测试范围。

当我运行 maven install 时,我在编译过程中遇到错误

[错误] 无法执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project something:编译失败:编译失败:

[错误] /C:/Users/me/git/base/module/src/test/java/com/company/redacted/db/IsAdminQueryTest.java:[3,24] 包 org.junit 不存在

如果我将junit 的范围更改为默认值,它将编译并运行良好。

一个可能相关的症状如果我运行Maven -> Update Project,我得到一个错误:

不能将 'module/src/main/resources' 嵌套在 'module/src/' 中。 启用嵌套从 'module/src/' 中排除 'main/'

但是module/src 不是 java 源文件夹。

在使用-e -X 运行时,来自编译阶段的 maven 日志。

注意路径中的测试

[DEBUG] 检测到过时的源:C:\Users\me\git\base\module\src\main\java\com\company\redacted\db\IsAdminQuery.java

[DEBUG] 检测到过时的源:C:\Users\ms\git\base\module\src\test\java\com\company\redacted\db\IsAdminQueryTest.java

我应该在哪里寻找错误的配置?

升级后更新 我已将 junit 和 mockito 的范围更改为 global 以解决此问题。当我将它们改回范围时:测试测试用例开始出现依赖问题/无法编译。显然 eclipse/maven 不知道我的测试类是测试类。

我已经直接在我的电脑上安装了 maven。从命令行运行 mvn install 与在 eclipse 中运行的问题相同。

【问题讨论】:

你用的是哪个版本的java? @Sambit 你想要java版本的完整性,还是有一个已知问题? 您可能需要更新 m2e 插件。 将 IsAdminQueryTest.java 从 src/main/... 移动到 src/test/ 因为 junit 范围是 test @imperezivan 这是日志文件行中的错字。我回去仔细检查了。测试代码实际上在 src/test/java 中。我已经更正了这个问题。 【参考方案1】:

我是个白痴。我不确定它是怎么发生的(可能是复制粘贴错误) 但我在 pom.xml 的构建部分设置了源目录。删除它解决了我所有的问题。

感谢所有提出建议的人,尤其是@Sambit。

  <build>
    **<sourceDirectory>src</sourceDirectory>**
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

【讨论】:

【参考方案2】:

如果是 maven 项目,您可以按照步骤操作。

在基于 maven 的项目中,在配置项目之前,转到命令提示符并运行 mvn clean installmven clean package。 如果是 Eclipse,我会建议使用最新版本的 Eclipse。对于现有的 maven 项目,在 Eclipse 中用作 Import Maven 项目。您必须转到文件菜单 > 导入 > 现有 Maven 项目。 Eclipse 中的项目可能需要一些时间,具体取决于依赖项的数量。一段时间后,您必须通过选择项目来单击 ALT+F5。

【讨论】:

我将 eclipse 更新到版本:2019-03 (4.11.0)。行为没有变化 你的 java 版本是多少? java版本为jdk1.8.0_172 你能删除Junit的test行并检查吗? 将 junit 依赖项的范围更改为默认值允许代码编译。测试代码甚至包含在我的最终 jar 中。 (不是我想要的)

以上是关于Maven/Eclipse 尝试用主代码编译测试的主要内容,如果未能解决你的问题,请参考以下文章

Maven Eclipse使用

Maven Eclipse使用

未找到模块 OpenJDK 12 Maven Eclipse

Android Maven Eclipse 仍然无法导入 apklib

eclipse install maven m2e-eclipse 离线安装m2e插件以及eclipse.ini配置-vm参数

自动化测试Maven+Eclipse+Selenium+Java环境搭建和测试