如何使用Gradle将Java代码和Junit测试结合在一起

时间:2013-03-08 16:36:04

标签: gradle

我有一个项目,其中源的主要源和测试用例保存在同一个包/目录中。每个测试类都是它测试的类的名称,末尾附加了“Test”。所以,如果我有一个Foo.java,它旁边会有一个FooTest.java。

我的问题是,如何使用Gradle构建此项目?我仍然希望将类文件分开,即主类的文件夹和测试类的文件夹。

3 个答案:

答案 0 :(得分:10)

这应该可以解决问题:

sourceSets {
    main {
        java {
            srcDirs = ["some/path"]
            exclude "**/*Test.java"
        }
    }
    test {
        java {
            srcDirs = ["some/path"]
            include "**/*Test.java"
        }
    }
}

答案 1 :(得分:3)

供参考,这是我用来试图解决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 )
            }
        }
    }
}

答案 2 :(得分:0)

这项工作对我来说:

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)
}}