我想在junit测试中使用默认的maven目录,所以:
test/java
文件夹。package com.xxx.xxx.tracker.utils.test;
但是eclipse正在给我一个错误。它想要将包名更改为
package test.java.com.xxx.xxx.tracker.utils.test;
或者eclipse要我将其移动到与com/xxx/xxx/tracker/utils/test
以下是来自eclipse的确切消息:
- 声明的包“com.xxx.xxx.tracker.utils.test”与预期的包“test.java.com.xxx.xxx.tracker.utils.test”不匹配
- 提供2个快速修复
- 将xxxTest.java移至'package com.xxx.xxx.tracker.utils.test'
- 将包裹声明更改为'test.java.com.xxx.xxx.tracker.utils.test'
我想将junit保留在test / java文件夹中以使其不受构建限制并遵循惯例,但在我的包名中使用test.java
没有意义。
有没有办法按照我想要的方式保存包名,并将它放在test / java文件夹中?
编辑:是因为我的'src'文件夹中有项目吗?例如:
src/
com.xxx.xxx.tracker.utils.Xxxx.java
test/
java/
com.xxx.xxx.tracker.utils.XxxxTest.java
这个项目并不是从Maven开始的。它是由其他人转换的。
编辑2 :为火灾提供更多燃料:
这是我的pom.xml中的内容(我没有设置)。
<build>
<sourceDirectory>/home/me/workspace/proj_PARENT/proj_Classes/src</sourceDirectory>
<testSourceDirectory>/home/me/workspace/proj_PARENT/proj_Classes/src/test/java</testSourceDirectory>
我确实有eclipse m2e插件。
答案 0 :(得分:3)
您的Structure和类路径有问题。使用描述的布局,文件夹src是源的根。但它包含测试,应该在子文件夹中。在您的情况下,您有嵌套的源文件夹。这必然导致编译问题,因为* .java文件将出现在两个包中。其中一个包是无效的。
src/
com.xxx.xxx.tracker.utils.Xxxx.java
test/
java/
com.xxx.xxx.tracker.utils.XxxxTest.java
现在你应该创建两个src文件夹。
src/
main/
java/
com.xxx.xxx.tracker.utils.Xxxx.java
test/
java/
com.xxx.xxx.tracker.utils.XxxxTest.java
答案 1 :(得分:2)
在eclipse中遵循标准Maven目录布局的maven项目应在其构建路径中包含以下源文件夹(来自.classpath文件的片段)
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
您的eclipse项目资源管理器应如下所示:
如果您正在使用Eclipse m2e插件,则在项目上创建src / main / java和src / test / java文件夹将导致它们自动添加到构建路径中。
更新:
在您的问题更新中,您显示您正在将sourceSourceDirectory嵌套在sourceDirectory中。 大多数IDE会警告你不要这样做,很可能会导致问题。 Eclipse可以通过从源文件夹中排除测试部分来处理它,但每次尝试通过m2e插件更新项目配置时,您将再次看到嵌套的异常消息。
如果您真的需要这种设置,则需要相应地配置构建路径(右键单击项目 - 构建路径 - 配置构建路径)。
答案 2 :(得分:1)
尝试将新文件夹test/java
添加到项目中,并将其配置为Project > Properties > Java Build Path
中的源文件夹。查看Source
标签。
您的目录布局应为:
project/
-> src/
-> test/
使用.test
作为测试包的后缀可能没有必要,并且在x.y.z.MyClass
中测试x.y.z.MyClassTest
时会为您节省导入语句。
答案 3 :(得分:0)
这正是我所做的。
src/test/java
和src/main/java
。Refactor > Move
,然后将其移至src/main/java
src/test/java
创建新的junit测试。Maven > update Project
。Project > Properties > Java Build Path
请参阅Source
标签。确保src/test/java
和src/main/java
在那里,src
不在那里。如果不正确,请返回并再次更新pom.xml(并查看有效的pom)... 谢谢大家的帮助。 PS:我丢失了修订控制历史记录,但这是因为我使用的是遗留系统。