单个文件的SourceDirectorySet

时间:2019-01-30 00:04:26

标签: gradle source-sets

我正在尝试创建一个由一组文件组成的自定义gradle源集(不一定位于同一目录中)。每个文件都可以位于一个目录中,该目录包含不应被视为源目录集一部分的其他文件。

如何创建代表单个文件的SourceDirectorySet实例?

我想使用此类实例通过java方法配置source源:

sourceSets {
    custom {
        java {
            source singleFileSourceDirectorySet
            source singleFileSourceDirectorySet2
            // ...
        }
    }
}

1 个答案:

答案 0 :(得分:0)

为每个文件的父目录创建SourceDirectorySet(第6行)。附加仅接受所选文件的过滤器(第7行)。

sourceSets {
    custom {
        java {
            final java.nio.file.Path srcPath = rootDir.toPath().resolve('path/to/a/File.java')
            final SourceDirectorySet sds = getObjects().sourceDirectorySet("name", "desc")
            sds.srcDir(srcPath.getParent().toFile())
            sds.filter { java.nio.file.Files.isSameFile(it.toPath(), srcPath) }
            source sds
        }
    }
}