如何在gradle中的测试源集中包含所有src / test / resources / **和src / main / java / ** / * .html?

时间:2016-07-15 17:32:22

标签: gradle

我有以下内容,并认为它是'添加'到我的sourceSet但实际上只是修改了它..

sourceSets {
    test {
        resources {
            srcDirs = ["src/main/java"]
            includes = ["**/*.html"]
        }
    }
}

我真正想要的是src / test / resources / **以及上面的内容。我不想从src / test / resources中排除任何文件,但上面只包含我放在那里的任何目录中的html。

感谢, 迪安

4 个答案:

答案 0 :(得分:4)

以下将说明使用main的技术(因此可以验证):

apply plugin: 'java'

sourceSets {
    myExtra {
        resources {
            srcDirs "src/main/java"
            includes = ["**/*.html"]
        }
    }
    main {
        resources {
            source myExtra.resources
        }
    }
}

通过命令行验证概念:

bash$ ls src/main/java
abc.html
xyz.txt

bash$ ls src/main/resources/
def.html
ijk.txt

bash$ gradle clean jar
bash$ jar tf build/libs/myexample.jar
META-INF/
META-INF/MANIFEST.MF
abc.html
def.html
ijk.txt

在您的情况下,将main更改为test。这个答案是通过Gradle doc for SourceDirectorySet发现的。有趣的是,对于3.0,它包含一个TODO:

  

TODO - 为各个源目录配置包含/排除

这意味着这种解决方法(通过this method)可能是必要的。

答案 1 :(得分:2)

我明白了你的意思。我试过这个并且它有效。请看一下:

sourceSets {
    test {
        resources {
            srcDirs = ["src/main/java"]
            includes = ["**/*.html"]
        }
    }
}

sourceSets.test.resources.srcDir 'src/test/resources'

在build.gradle中添加这些内容。

答案 2 :(得分:0)

我在想是否发布这个答案。因此,如果您对上一个答案不满意,请尝试以下hacky方式(可能它适用于eclipse命令):

apply plugin: 'java'

ConfigurableFileTree.metaClass.getAsSource = {
  def fileTrees = delegate.asFileTrees
  fileTrees.metaClass.getSrcDirTrees = {
    return delegate as Set
  }
  fileTrees as SourceDirectorySet
}

sourceSets {
  main {
    resources {
      srcDirs = []  // cleanup first
      source fileTree('src/main/java').include('**/*.html').asSource
      source fileTree('src/main/resources').asSource
    }
  }
}

答案 3 :(得分:0)

并非完全是您的要求,但对于发现此问题的人可能会有所帮助:

我只想将测试资源放在源旁边。所以我只需要排除来源。 在您的情况下,也许您可​​以排除那些会介意进入JAR和/或类路径的对象。

没有其他答案对我有用,这确实有用:

sourceSets {
    test {
        resources {
            srcDirs += "src/test/kotlin"
            excludes = ["**/*.kt"]
        }
    }
}

6.3级。