java - Gradle 增量构建未在目标路径中生成文件夹结构

标签 java gradle build incremental-build

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/

相关文章:

java - 如何向 Gradle 添加新的源集?

java - 如何从 Java 数组中删除对象?

Android:根据用户设置以编程方式更改 SourceSet

java - OpenCV Java - 如何裁剪图像中检测到的圆圈

java - 在tomcat中部署Spring boot应用程序

java - 在 org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@397740e0 上找不到属性 'compile'

android - 未指定 buildToolsVersion,所有 "apply plugin: xxxx "在 app/build.gradle

java - 如何将动态生成的文件添加到我的耳朵存档中?

android - 资源条目 com.crashlytics.android.build_id 已定义 - Android Studio

java - Maven Jar插件怪异错误NoClassDefFoundError : javá/nio/fiìe/FileStore