我有一个非常默认的exec任务设置,如:
task myTask(type:Exec) {
workingDir '.'
commandLine './myscript.sh'
doLast {
if(execResult == 0) {
//one thing
} else {
//another thing
}
}
}
Run Code Online (Sandbox Code Playgroud)
但不幸的是,当脚本抛出错误时,它永远不会执行doLast块.相反,它会跳过它并使整个构建失败
任务':project:myTask'的执行失败.进程'命令'./myscript.sh''以非零退出值1完成"
那对我来说没用.使用非零退出值完成myscript.sh的整个想法是这样我可以执行一些代码来响应它.我需要做什么才能使构建失败但捕获结果并执行响应操作?谢谢您的帮助!
我已阅读几乎所有标记为Demeter法的问题.我的具体问题在任何其他问题中都没有得到回答,尽管它非常相似.主要是我的问题是当你有一个具有复合层的对象,但需要从各种对象中检索属性值时,你如何实现这一点以及为什么采用一种方法而不是另一种?
假设你有一个非常标准的对象,由其他对象组成,如下所示:
public class Customer {
private String name;
private ContactInfo primaryAddress;
private ContactInfo workAddress;
private Interests hobbies;
//Etc...
public getPrimaryAddress() { return primaryAddress; }
public getWorkAddress() { return workAddress; }
public getHobbies() { return hobbies; }
//Etc...
}
private ContactInfo {
private String phoneNumber;
private String emailAddress;
//Etc...
public getPhoneNumber() { return phoneNumber; }
public getEmailAddress() { return emailAddress; }
//Etc...
}
private Interests {
private List listOfInterests;
}
Run Code Online (Sandbox Code Playgroud)
以下都违反了得墨忒耳法则:
System.out.println("Phone: " + customer.getPrimaryAddress().getPhoneNumber());
System.out.println("Hobbies: " + customer.getHobbies().getListOfInterests().toString());
Run Code Online (Sandbox Code Playgroud)
我认为这也违反了得墨忒耳法(澄清?): …