我刚刚在IntelliJ中使用以下文件打开了这个(https://github.com/codetojoy/easter_eggs_for_gradle/tree/master/egg_StackOverflow_51685286)项目:
src/net/codetojoy/Foo.java
src/net/codetojoy/service/FooService.java
src/net/codetojoy/tests/FooServiceTestCase.java
并且
build.gradle
包含sourceSet的配置,如下所示:sourceSets {
main {
java {
srcDir 'src'
exclude 'net/codetojoy/tests/*'
}
}
}
sourceSets.test.java.srcDir 'src/net/codetojoy/tests'
在
FooServiceTestCase.java
文件上,我在打包行上收到一个错误,说Package name 'net.codetojoy.tests' does not correspond to the file path
。我认为这是由于定制的源和测试集。但是我不确定如何解决。
请帮忙
最佳答案
test
源集定义需要看起来更像main
之一:
sourceSets {
main {
java {
srcDir 'src'
exclude 'net/codetojoy/tests/*'
}
}
test {
java {
srcDir 'src'
include 'net/codetojoy/tests/*
}
}
上一个答案在命令行中起作用但在IDE中不起作用的原因是对于Java编译器而言,源文件的位置无关紧要。
package
指令用于正确放置生成的class
文件,但源文件不必位于匹配的目录结构中。但是通常IDE会执行此检查。