由于历史原因,我在多个目录中拥有资源。
如果我需要这些目录中的所有内容,则可以像这样修改源集:

sourceSets {
    main {
        java {
            srcDir = 'src/main/java'
        }
        resources {
            srcDir = 'src/main/resources'
            srcDir = 'resources'
            srcDir = 'properties'
        }
    }
}
但是,我需要为每个目录应用不同的包含/排除过滤器,不幸的是它们彼此冲突,并且resources中的任何包含/排除过滤器都将其应用于所有3个目录。
如何分别过滤每个目录?

最佳答案

SourceDirectorySet (sourceSets.main.resource的类)提供了一种 source(SourceDirectorySet) 方法,该方法允许添加其他源集。可以使用 SourceDirectorySet 创建ObjectFactory.sourceDirectorySet(String, String)的新实例,因此您可以尝试以下操作:

def resourcesSet = objects.sourceDirectorySet("resources", "Resources")
resourcesSet.srcDir 'resources'
// apply filter to resourcesSet

def propertiesSet = objects.sourceDirectorySet("properties", "Properties")
propertiesSet.srcDir 'properties'
// apply filter to propertiesSet

sourceSets {
    main {
        resources {
            source(resourcesSet)
            source(propertiesSet)
        }
    }
}

关于gradle - 如何将多个目录和筛选器模式添加到SourceSet?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63626566/

10-11 22:22
查看更多