【问题标题】:Maven/Eclipse Attempts to Compile Tests with Main CodeMaven/Eclipse 尝试用主代码编译测试
【发布时间】: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 中。我已经更正了这个问题。

标签: java eclipse maven


【解决方案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 中。 (不是我想要的)
    猜你喜欢
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    相关资源
    最近更新 更多