我有一个项目,其中主要源和该源的测试用例保存在同一个包/目录中。每个测试类都是它正在测试的类的名称,并在末尾附加“Test”。因此,如果我有一个 Foo.java,那么它旁边就会有一个 FooTest.java。
我的问题是,如何使用 Gradle 构建这个项目?我仍然希望将类文件分开,即主类的文件夹和测试类的文件夹。
我有一个项目,其中主要源和该源的测试用例保存在同一个包/目录中。每个测试类都是它正在测试的类的名称,并在末尾附加“Test”。因此,如果我有一个 Foo.java,那么它旁边就会有一个 FooTest.java。
我的问题是,如何使用 Gradle 构建这个项目?我仍然希望将类文件分开,即主类的文件夹和测试类的文件夹。
这应该可以解决问题:
sourceSets {
main {
java {
srcDirs = ["some/path"]
exclude "**/*Test.java"
}
}
test {
java {
srcDirs = ["some/path"]
include "**/*Test.java"
}
}
}
作为参考,这里是我用来尝试解决 Eclipse 插件的类路径问题的代码。将此与上述彼得的答案结合使用似乎有效。
// The following ensures that Eclipse uses only one src directory
eclipse {
classpath {
file {
//closure executed after .classpath content is loaded from existing file
//and after gradle build information is merged
whenMerged { classpath ->
classpath.entries.removeAll { entry -> entry.kind == 'src'}
def srcEntry = new org.gradle.plugins.ide.eclipse.model.SourceFolder('src', null)
srcEntry.dir = file("$projectDir/src")
classpath.entries.add( srcEntry )
}
}
}
}
这对我有用:
eclipse {
classpath {
file {
withXml {
process(it.asNode())
}
}
}
}
def process(node) {
if (node.attribute('path') == 'src/test/java' || node.attribute('path') == 'src/test/resources')
node.attributes().put('output', "build/test-classes")
else
node.children().each {
process(it)
}}