我有一个插件im正在编写中,用于处理供应商生成的一些代码。现在,我遇到的问题是代码生成器将某些文件命名为*.JAVA
而不是*.java
,并且编译任务无法提取它们。
但是变得奇怪
dependencies {
j2cImplementation 'com.ibm.etools:marshall:6.1.0.1-20070706_1700'
j2cCompileOnly 'javax.resource:connector:1.0'
}
sourceSets {
j2c {
java {
srcDirs += "src/generated-sources/j2c/java"
}
}
}
compileJ2cJava {
source = sourceSets.j2c.allSource
}
compileJava.dependsOn compileJ2cJava
task tryit {
sourceSets.j2c.allSource.each {println(it)}
println("*")
compileJ2cJava.source.each {println(it)}
println("*")
compileJ2cJava.includes.each {println(it)}
println("*")
compileJ2cJava.excludes.each {println(it)}
}
打印此
/formats/TPQPMI90Out.java
/formats/TPQPMI90OutRec.java
/formats/TPQPMI90OutRec_ERROR_TABLE.JAVA
/formats/TPQPMI95Out.java
/formats/TPQPMI95OutRec.java
/formats/TPQPMI95OutRec_ERROR_TABLE.JAVA
/scopes/TPQPMI90In.java
/scopes/TPQPMI90InRec.java
/scopes/TPQPMI95In.java
/scopes/TPQPMI95InRec.java
*
/formats/TPQPMI90Out.java
/formats/TPQPMI90OutRec.java
/formats/TPQPMI90OutRec_ERROR_TABLE.JAVA
/formats/TPQPMI95Out.java
/formats/TPQPMI95OutRec.java
/formats/TPQPMI95OutRec_ERROR_TABLE.JAVA
/scopes/TPQPMI90In.java
/scopes/TPQPMI90InRec.java
/scopes/TPQPMI95In.java
/scopes/TPQPMI95InRec.java
*
*
请参阅compileJ2cJava.source.each {println(it)}
任务显示* .JAVA文件位于源中,但是当传递给编译器时,编译器将永远不会获得这两个文件,并且找不到类错误。
我很困惑,我尝试了所有可以想到的地方include
的所有组合。我无法获取这些文件。有什么想法吗?
好吧,我找到了理由
https://docs.gradle.org/current/javadoc/org/gradle/api/file/SourceDirectorySet.html#getFilter--
看起来,如果没有大量工作(基本上是向系统中添加新语言),我将无能为力,不得不写一个小写所有扩展名的任务。