나는 이것을 하루 반 정도 고심하고있다. taskdef
또는 내가하고 싶은 scriptdef
즉 할 수Gradle에서 Ant taskdef와 동일한 것은 무엇입니까?
<target name="test">
...
<runexe name="<filename> params="<params>" />
...
</target>
runexe
다른 곳
<macrodef name="runexe" >
...
</macrodef>
로 선언도있을 수 있습니다 : 나는 Gradle을에서 다음과 개미의 개념을 복제하기 위해 노력하고있어 재사용 가능한 미리 정의 된 코드 블록을 호출하고 Gradle 작업에서 필요한 매개 변수를 전달합니다. 나는 많은 것을 시도했다. 문제없이 exe를 실행하는 작업을 생성 할 수 있습니다.
task runexe(type: Exec){
commandLine 'cmd', '/c', 'dir', '/B'
}
task test(dependsOn: 'runexe') {
runexe {
commandLine 'cmd', '/c', 'dir', '/N', 'e:\\utilities\\'
}
}
test << {
println "Testing..."
// I want to call runexe here.
...
}
및 실행하려면 dependsOn을 사용하십시오. 그러나 이것은 내가 정확하게 필요할 때 runexe
을 실행할 수 없도록합니다. 나는 executable
, args
및 commandLine
으로 광범위하게 실험했습니다. 나는 exec
으로 놀았으며 여기 저기에 여러 가지 변형을 시도했습니다. 나는 또한 Gradle 사이트에서 제공되는 무료 서적을 사용하고 있습니다.
디렉토리에서 파일 목록을 읽고 각 파일을 다른 인수로 응용 프로그램에 전달해야합니다. 실행 시간까지 파일 목록을 알 수 없으므로 스크립트가 파일을 읽을 때까지 목록이 달라질 수 있으며 호출을 반복해야합니다.
가장 좋은 옵션은 현재 here인데, 괜찮 으면 좋겠지 만 더 나은 방법이 있어야합니다. 나는 일을 한 번 불러야한다는 것을 이해하고 다른 일 안에서 일을 부르거나 하나의 매개 변수를 전달할 수는 없다는 것을 이해합니다. 그러나 이것에 대한 올바른 접근법이 Gradle에서 무엇인지 알고 싶습니다. 나는 이것이 웹 전반에 걸쳐 자주 묻는 질문이기 때문에 Gradle 디자이너 중 한 명은 나를 계몽 할만큼 친절 할 것으로 기대하고 있으며 나는 아직 명확한 대답이나 내가 할 수있는 해결책을 찾지 못하고있다.
거들 디자인에 의해, 엄청나게 유연합니다. 마지막 단락에서 언급 된 링크에서 사용 된 기술은 나에게 잘 보입니다. 즉 모든 것이 과제가되어야합니다. 메소드를 정의하는 것이 좋습니다. –
감사합니다. 나는 지금 내가 원하는 것을하기 위해 함수를 사용했지만 더 많은 Gradle-ish 방법이 있는지 여전히 관심이있다. – ConfusedAgain