8

メイン ソースとそのソースのテスト ケースが同じパッケージ/ディレクトリに保持されているプロジェクトがあります。各テスト クラスは、テスト対象のクラスの名前の末尾に「Test」を追加したものです。したがって、Foo.java がある場合、そのすぐ隣に FooTest.java があります。

私の質問は、このプロジェクトを Gradle でビルドするにはどうすればよいですか? クラス ファイルは、メイン クラス用のフォルダとテスト クラス用のフォルダなど、別々に保持したいと考えています。

4

3 に答える 3

10

これでうまくいくはずです:

sourceSets {
    main {
        java {
            srcDirs = ["some/path"]
            exclude "**/*Test.java"
        }
    }
    test {
        java {
            srcDirs = ["some/path"]
            include "**/*Test.java"
        }
    }
}
于 2013-03-08T18:58:18.973 に答える
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 )
            }
        }
    }
}
于 2013-03-11T13:44:37.767 に答える
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)
}}
于 2015-07-15T14:04:05.927 に答える