#gradle
#gradle
Вопрос:
Я пытаюсь передать аргумент командной строки задаче Gradle Exec. Итак, я хочу выполнить скрипт bash и присвоить ему параметр. Однако выполнение скрипта без параметра проходит плавно. Это просто сам параметр с тем @Option
, который выдает значение null при печати. Мой код следующий
import org.gradle.api.tasks.options.Option;
task buildSamples(type: SampleExecTask){
command()
}
class SampleExecTask extends Exec {
private String argument;
@Option(option = "argument", description = "An argument for the script")
public void setSample(String argument) {
this.argument = argument;
}
@Input
public String getArgument() {
return argument;
}
void command() {
println(argument);
commandLine 'sh', 'myBashScript.sh'
}
}
У кого-нибудь есть идеи, почему значение моего аргумента равно нулю и не устанавливается?
Заранее спасибо!
Ответ №1:
Он устанавливается, но не в то время, когда вы ссылаетесь на него. Большинство объектов в Gradle оцениваются лениво, и во время настройки не гарантируется, что они будут полностью настроены.
Если вы вставляете command()
doFirst
блок, он не должен быть нулевым.
Однако более правильным способом дополнить задачу Exec дополнительным аргументом из параметра командной строки, вероятно, является настройка стандартных args
свойств в установщике:
// Groovy DSL
task buildSamples(type: SampleExecTask)
class SampleExecTask extends Exec {
@Option(option = "argument", description = "An argument for the script")
public void setSample(String argument) {
args(argument)
}
// Base configuration can be set in the constructor
SampleExecTask() {
executable('sh')
args('myBashScript.sh')
}
}