在gradle中添加源文件扩展名

ldfqzlk8  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(101)

我试图告诉gradle扩展名为*.dsl的文件应该编译为groovy文件,因此我添加了一个包含模式的源代码集,并更改了compile task includes属性:

sourceSets {
   ...
   dsl_scripts {
      groovy {
         include '**/*.dsl'
      }
   }
}

compileDsl_scriptsGroovy.includes = ['**/*.dsl']

字符串
但是,当我在调试模式下运行构建时,它会跳过所有*.dsl文件,并显示以下消息:

Skipping task ':compileDsl_scriptsGroovy' as it has no source files


下面的代码行成功地输出了我尝试编译的所有文件:

println sourceSets.dsl_scripts.allSource.matching({include '**/*.dsl'}).getFiles()


我做错了什么?

编辑:我在gradle源代码中找到了以下代码片段:

FileCollection groovyJavaOnly = spec.getSource().filter(new Spec<File>() {
    public boolean isSatisfiedBy(File element) {
       return element.getName().endsWith(".groovy") || element.getName().endsWith(".java");
    }
});

spec.setSource(new SimpleFileCollection(groovyJavaOnly.getFiles()));


有可能覆盖吗?

kxe2p93d

kxe2p93d2#

要使gradle groovy编译任务编译扩展名不是.java.groovy的文件,需要将新的扩展名添加到sourceSets和编译任务的groovyOptions.fileExtensions
例如,要使compileTestGroovy任务编译具有.dummy扩展名的文件,除了.java.groovy之外,还需要进行以下更改:

sourceSets.test.groovy.filter.include('**/*.dummy')

compileTestGroovy {
    groovyOptions.fileExtensions = ['java', 'groovy', 'dummy']
}

字符串

相关问题