Maven突然想要src /而不是src/main/java

Aar*_*lla 10 eclipse maven m2e

我正在使用Maven 3.3.3和Eclipse Mars以及m2e.昨天,我创建了一个新的Java项目并将其转换为Maven项目.

之后,类路径只包含src而不是标准src/main/java.我很惊讶,但我只是创建了丢失的文件夹并运行了m2e的"更新项目".这并没有解决问题; m2e仍坚持只使用src.

所以我手动编辑了类路径,最后得到了通常的结果

src/test/java
src/test/resources
src/main/java
src/main/resources
Run Code Online (Sandbox Code Playgroud)

当我现在尝试m2e的"更新项目"时,我收到此错误:

Cannot nest 'foo/src/test/java' inside 'foo/src'. To enable the nesting, exclude 'test/' from 'foo/src'
Run Code Online (Sandbox Code Playgroud)

叹了口气,然后我去了命令行并跑去mvn eclipse:eclipse获取这个类路径:

src/test/java
src/test/resources
src
src/main/resources
Run Code Online (Sandbox Code Playgroud)

现在,我完全难过了.为什么会这样?

Aar*_*lla 36

在POM编辑器中打开POM,然后单击"Effective POM"选项卡.搜索sourceDirectory.你可能会看到这样的东西:

<sourceDirectory>src</sourceDirectory>
Run Code Online (Sandbox Code Playgroud)

当您第一次将Java项目转换为Maven时,m2e尝试保持类路径相同.默认情况下,Eclipse Java项目具有不同的布局.他们使用src/而不是src/main/java/.没有测试文件夹,因为Eclipse项目通常将测试放入不同的项目中.

要解决此问题:

  1. sourceDirectory从POM中删除元素(注意:它可能位于父POM中).
  2. 转到项目
  3. 选择所有源文件夹
  4. 从构建路径中删除它们(上下文菜单 - >构建路径 - >从构建路径中删除).
  5. 更新项目

现在错误应该消失,类路径应该是正确的.

  • 这对我有用,尽管我可以跳过第1步。 (2认同)