我使用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
当我尝试m2e'更新项目"现在,我收到了这个错误:
Cannot nest 'foo/src/test/java' inside 'foo/src'. To enable the nesting, exclude 'test/' from 'foo/src'
叹息我接下来转到命令行并运行mvn eclipse:eclipse
以获取此类路径:
src/test/java
src/test/resources
src
src/main/resources
现在,我完全难过了。为什么会这样?
答案 0 :(得分:30)
在POM编辑器中打开POM,然后单击“Effective POM”选项卡。搜索sourceDirectory
。你可能会看到这样的东西:
<sourceDirectory>src</sourceDirectory>
当您第一次将Java项目转换为Maven时,m2e尝试保持类路径相同。默认情况下,Eclipse Java项目具有不同的布局。他们使用src/
代替src/main/java/
。由于Eclipse项目通常将测试放入不同的项目中,因此没有测试文件夹。
解决问题:
sourceDirectory
元素(注意:它可能位于父POM中)。错误现在应该消失,类路径应该是正确的。
答案 1 :(得分:1)
您可以创建两种类型的文件夹:1)包2)源文件夹
要创建包,请右键单击所需的文件夹(在我的示例中,我右键单击Java资源) - &gt;新 - &gt;封装
应该出现一个看起来像这样的弹出窗口
“源文件夹:”这是您选择项目的地方。如果您没有看到任何内容,请单击“浏览...”并找到您的项目。如果我点击“浏览...”,它会显示:
“姓名:”是您提供包裹的名称。
注意:包应位于源文件夹中。源文件夹是父文件夹。
要创建源文件夹,请右键单击所需的文件夹(在我的示例中,我右键单击Java资源) - &gt;新 - &gt;源文件夹
在“项目名称:”下,编写项目名称。如果您需要帮助,请单击“浏览...”
在“文件夹名称:”下,写下所需的文件夹名称。
错误:如果您正在尝试创建“src / main / resources”文件夹,并且您遇到此错误“无法在'ProjectName'中嵌套'ProjectName'。要启用嵌套,请从
中排除'main /'解决方案: