2012-12-12 7 views

답변

5

예, 코드에서 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(); 
    
    여기

    좀 더 정보입니다 여기

    는 개미 작업 확장하는 방법의 예
  • http://ant.apache.org/manual/antexternal.html
+0

간단한 시스템 호출보다 나은 점은 무엇입니까? – amphibient

+0

@foampile - 링크를 인용하면 : 크로스 플랫폼이며 강력하며 커뮤니티 지원의 이점을 누릴 수 있습니다. 또한 모든 라이브러리와 마찬가지로 Ant 작업에는 직접 구현하는 대신 사용할 수있는 다양한 옵션이 포함되어 있습니다. 예를 들어 복사 작업을 사용하면 단순히 부울 필드를 설정하여 기존 파일을 덮어 쓸지 여부를 쉽게 지정할 수 있습니다. 또한, "_ 단순"시스템 호출을 할 때 잘못 될 수있는 많은 것들이 있습니다. 차라리 아파치의 코드에서 이러한 오류 중 일부를 처리하도록하겠습니다. 나는 scp를 실행할 때 잘못 될 수있는 모든 것을 생각하기 위해 셔터! – jahroy

+0

복사 작업의 소스 코드에 대한 링크입니다. 보시다시피, _TONS_ 옵션을 활용할 수 있습니다 (이 모든 것을 직접 구현하는 것을 싫어합니다) : http : //www.docjar .com/html/api/org/apache/tools/ant/taskdefs/Copy.java.html – jahroy

0

이것은 Java 코드 내에 Ant 태스크를 포함시키는 데는 효과가있을 것입니다. 우리는 최후의 수단으로 전에 이것을했습니다. 하나의 장애물은 실제로 작동하도록 작업을 얻으려면 일부 Ant 특성 (예 : setProject)을 설정하는 것입니다. 이로 인해 사용하기가 다소 어려워 질 수 있습니다. 또한 Ant 런타임 라이브러리를 실행하려면이 라이브러리가 필요하다.

첫 번째 권장 사항은 Ant 오버 헤드없이 직접 원하는 실제 SCP 코드를 호출하는 방법이 있는지 확인하는 것입니다. 두 번째 대안은 Java SCP 라이브러리를 찾거나 Ant scp 태스크가 사용하는 것을 찾아내는 것입니다. 더 많은 예제는 scp via java을 참조하십시오. 마지막 권장 사항은 위에서 설명한 Ant 작업을 포함하는 것입니다.

0

나는 시스템 콜을 호출하는 것은 간단하다고 생각 :

try { 
      Runtime.getRuntime().exec("ant scpTask"); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
0

내가 Runtime.getRuntime().exec("ant deploy"); 당신이 하나의 고정 된 OS에서 실행하는 경우, 그것은 무엇을 얻을 수있는 간단하고 쉬운 방법은 정말, 당신의 OS에 따라 생각 네가 원해. :)

관련 문제