使用Gradle 2.12(适用于Java),当且仅当'build'时,如何下载源文件?

时间:2016-03-23 07:19:38

标签: java gradle

我想创建一个gradle脚本,只有当你构建时才会通过互联网下载源代码(例如,当你'gradle claen'时)。

我基本上可以实现,只有没有目录'src'才能完成下载。如果我创建了一个下载源代码的任务,那么当你“清理干净”时可能没有完成下载。 但我想让你的脚本下载代码“gradle build” 这就是为什么我编写脚本来下载ccompileJava中的代码... 但如果我这样做,如果你在没有目录'src'的情况下'gradle clean', gradle下载代码然后删除它......

如何制作符合我意愿的剧本??

下面的

是与问题相关的脚本部分。

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


clean { delete 'src' }

1 个答案:

答案 0 :(得分:1)

您的代码在配置阶段执行。所以它执行你执行的任何任务。

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

public class XMLHyperLinkAdapter extends XmlAdapter<String, Hyperlink> {

@Override
public Hyperlink unmarshal(String v) {
    try{
        Hyperlink link = new Hyperlink();
        link.setText(v);
        link.setOnAction((ActionEvent e) -> {
            link.setVisited(false);
            System.out.println("This link is clicked: " + link.getText());
        });
        return link;

    }catch (Exception e)
    {
       e.printStackTrace();
       return null;
    }

}

@Override
public String marshal(Hyperlink v) throws Exception {
    return v.getText();
}

请注意downloadSources中的task downloadSources << { ... } compileJava { dependsOn downloadSources } 。这意味着后续关闭作为任务执行的一部分执行,而不是作为其配置的一部分。