내 코드에서 Ant 태스크 (scp) 중 하나를 사용하고 싶습니다. 그것을 할 방법이 있습니까?Java 코드에서 Apache Ant의 태스크를 사용하는 방법
단순히 Ant의 라이브러리 중 하나를 참조하고 코드에서 직접 API를 호출해야합니까?
내 코드에서 Ant 태스크 (scp) 중 하나를 사용하고 싶습니다. 그것을 할 방법이 있습니까?Java 코드에서 Apache Ant의 태스크를 사용하는 방법
단순히 Ant의 라이브러리 중 하나를 참조하고 코드에서 직접 API를 호출해야합니까?
예, 코드에서 Ant 태스크를 아주 쉽게 호출 할 수 있습니다.
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Target;
import org.apache.tools.ant.taskdefs.Copy;
public class MyCopyTask extends Copy {
public MyCopyTask() {
setProject(new Project());
getProject().init();
setTaskName("MyCopy");
setTaskType("MyCopy");
setOwningTarget(new Target());
}
}
다음
코드에서 그것을 사용하는 방법은 다음과 같습니다 :
MyCopyTask copier = new MyCopyTask();
copier.setFile(srcFile);
copier.setTofile(toFile);
copier.execute();
여기
좀 더 정보입니다 여기
는 개미 작업 확장하는 방법의 예이것은 Java 코드 내에 Ant 태스크를 포함시키는 데는 효과가있을 것입니다. 우리는 최후의 수단으로 전에 이것을했습니다. 하나의 장애물은 실제로 작동하도록 작업을 얻으려면 일부 Ant 특성 (예 : setProject)을 설정하는 것입니다. 이로 인해 사용하기가 다소 어려워 질 수 있습니다. 또한 Ant 런타임 라이브러리를 실행하려면이 라이브러리가 필요하다.
첫 번째 권장 사항은 Ant 오버 헤드없이 직접 원하는 실제 SCP 코드를 호출하는 방법이 있는지 확인하는 것입니다. 두 번째 대안은 Java SCP 라이브러리를 찾거나 Ant scp 태스크가 사용하는 것을 찾아내는 것입니다. 더 많은 예제는 scp via java을 참조하십시오. 마지막 권장 사항은 위에서 설명한 Ant 작업을 포함하는 것입니다.
나는 시스템 콜을 호출하는 것은 간단하다고 생각 :
try {
Runtime.getRuntime().exec("ant scpTask");
} catch (IOException e) {
e.printStackTrace();
}
내가 Runtime.getRuntime().exec("ant deploy");
당신이 하나의 고정 된 OS에서 실행하는 경우, 그것은 무엇을 얻을 수있는 간단하고 쉬운 방법은 정말, 당신의 OS에 따라 생각 네가 원해. :)
간단한 시스템 호출보다 나은 점은 무엇입니까? – amphibient
@foampile - 링크를 인용하면 : 크로스 플랫폼이며 강력하며 커뮤니티 지원의 이점을 누릴 수 있습니다. 또한 모든 라이브러리와 마찬가지로 Ant 작업에는 직접 구현하는 대신 사용할 수있는 다양한 옵션이 포함되어 있습니다. 예를 들어 복사 작업을 사용하면 단순히 부울 필드를 설정하여 기존 파일을 덮어 쓸지 여부를 쉽게 지정할 수 있습니다. 또한, "_ 단순"시스템 호출을 할 때 잘못 될 수있는 많은 것들이 있습니다. 차라리 아파치의 코드에서 이러한 오류 중 일부를 처리하도록하겠습니다. 나는 scp를 실행할 때 잘못 될 수있는 모든 것을 생각하기 위해 셔터! – jahroy
복사 작업의 소스 코드에 대한 링크입니다. 보시다시피, _TONS_ 옵션을 활용할 수 있습니다 (이 모든 것을 직접 구현하는 것을 싫어합니다) : http : //www.docjar .com/html/api/org/apache/tools/ant/taskdefs/Copy.java.html – jahroy