我想创建一个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' }
答案 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
}
。这意味着后续关闭作为任务执行的一部分执行,而不是作为其配置的一部分。