使用Gradle 2.12(适用于Java),当且仅当';构建&x27;?

使用Gradle 2.12(适用于Java),当且仅当';构建&x27;?,java,gradle,Java,Gradle,我想制作一个gradle脚本,当并且仅当您构建时(例如,当您“gradle claen”时)通过互联网下载源代码 我基本上可以做到这一点,下载是做只有没有目录'src'。如果我做了一个下载源代码的任务,那么当你“gradleclean”时,可能下载没有完成。 但我想让脚本在“gradle build”时下载代码 这就是为什么我要编写脚本来下载ccompileJava中的代码。。。 但是如果我这样做,如果你在没有目录“src”的情况下进行“gradleclean”, gradle下载代码,然后将其

我想制作一个gradle脚本,当并且仅当您构建时(例如,当您“gradle claen”时)通过互联网下载源代码

我基本上可以做到这一点,下载是做只有没有目录'src'。如果我做了一个下载源代码的任务,那么当你“gradleclean”时,可能下载没有完成。 但我想让脚本在“gradle build”时下载代码 这就是为什么我要编写脚本来下载ccompileJava中的代码。。。 但是如果我这样做,如果你在没有目录“src”的情况下进行“gradleclean”, gradle下载代码,然后将其删除

我怎样才能使剧本满足我的愿望

下面是与问题相关的脚本部分

compileJava {
if (!new File('src').exists()){
    tasks.downloadZipFile.execute()
    tasks.downloadAndUnzipFile.execute()
    file('downloaded/src').renameTo('src')
    delete 'downloaded'
}
}


clean { delete 'src' }

您的代码在配置阶段执行。因此,无论你执行什么任务,它都会被执行

它应该在执行阶段执行,一旦gradle决定了运行哪些任务,以什么顺序运行。创建一个任务,并使compileJava依赖于该任务,因为它必须在compileJava之前执行

task downloadSources << {
    ...
}

compileJava {
    dependsOn downloadSources
}

task downloadSources compileJava{if(!new File('src').exists()){tasks.downloadZipFile.execute()tasks.downloadUnzipfile.execute()文件('download/src')。renameTo('src')delete'download'}}clean{delete'src'}不在注释中。在你的问题中,格式正确。非常感谢。这正是我想要的答案。