Gradle 增量构建任务检测项目中已更改的文件并编译并仅将这些文件放入目标目录。
问题是,当它将这些更改文件放入目标目录时,但它没有制作包。
例如:假设当我使用 gradle 运行任务时,我有包“org/example/test.java”,并且它检测到 test.java 文件更改,然后将其编译并放入目标目录,如下所示: 'target/project/WEB-INF/classes/test.class' 不制作任何包。 但我需要 'target/project/WEB-INF/classes/org/example/test.class'任何帮助表示赞赏。我将我的 gradle 任务代码放在下面:
task incrementalReverse(type: IncrementalReverseTask) {
inputDir = file('src/java')
outputDir = file("${tempBuildPath}/WEB-INF/classes")
}
class IncrementalReverseTask extends DefaultTask {
@InputDirectory
def File inputDir
@OutputDirectory
def File outputDir
@TaskAction
void execute(IncrementalTaskInputs inputs) {
println inputs.incremental ? "CHANGED inputs considered out of date"
: "ALL inputs considered out of date"
if (!inputs.incremental)
project.delete(outputDir.listFiles())
inputs.outOfDate { change ->
println "out of date: ${change.file.name}"
def targetFile = new File(outputDir, change.file.name)
targetFile.text = change.file.text.reverse()
}
inputs.removed { change ->
println "removed: ${change.file.name}"
def targetFile = new File(outputDir, change.file.name)
targetFile.delete()
}
}
}
最佳答案
def targetFile = new File(outputDir, change.file.name)
targetFile.parentFile.mkdirs()
关于java - Gradle 增量构建未在目标路径中生成文件夹结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42135477/