빌드가 더 많은 크로스 플랫폼이되도록하려면 종속성 관리를 사용하는 것이 좋습니다. ivy plug-in은 빌드시 빌드의 플러그인 버전을 자동으로 설치할 수 있습니다.
이 방법은 당신이 이제까지 당신의 ANT lib 디렉토리에 설치해야합니다 마지막 항아리 파일 ivy.xml에서 프로젝트의 종속성을 선언 아이비 2.2.0.jar :-)
첫 번째 의미
<ivy-module version="2.0">
<info organisation="com.myspotontheweb" module="demo"/>
<configurations>
<conf name="anttask" description="Jars implementing ANT tasks"/>
</configurations>
<dependencies>
<dependency org="com.jcraft" name="jsch" rev="0.1.42" conf="anttask->default"/>
</dependencies>
</ivy-module>
당신의
의 build.xml 실행 아이비 내
와 담쟁이 구성에 따라 사용자 정의 클래스 경로를 채우는 데 사용 :
<target name='init' description='Resolve project dependencies and set classpaths'>
<ivy:resolve/>
<ivy:cachepath pathid="anttask.path" conf="anttask"/>
</target>
마지막으로, 빌드의 다른 곳에서 이제 아이디로 자동 채워지는 클래스 경로를 사용하여 ANT 작업을 선언합니다.
<target name='dosomething' depends="init">
<taskdef name="sshexec"
classname="org.apache.tools.ant.taskdefs.optional.ssh.SSHExec"
classpathref="anttask.path"/>
..
..
</target>
이 방법은 모든 ANT 플러그인에서 작동하며 대부분 중앙 Maven 저장소에서 사용할 수 있습니다. 두 번째 이점은 모든 빌드에서 플러그인 버전을 쉽게 업그레이드 할 수 있다는 것입니다.
개미 샘플을 테스트 해 보셨습니까? 나는 그것이 효과가 없어야하는 이유를 보지 못합니다. 다른 작업에도 같은 방식으로 사용합니다. – Robert
작동하지 않는다고 말하는 것은 아니지만 작동하지만 피하려고하는 ant lib 디렉토리에 jsch.jar를 추가해야합니다. 죄송합니다. 제 질문에 해당 사실이 명시되어 있지 않은 경우. <파일 세트 디렉토리 = "dir1"> 다음과 같은 작업이 있습니다. { }이 작업을하려면 jsch.jar을 ant lib에 수동으로 추가해야합니다. 빌드 파일에 무엇인가 넣음으로써 피할 수 있습니까? –
Ravi
jsch.jar이 lib 디렉토리에 없으면 삭제 한 스 니펫도 작동합니다. 그런 다음 올바른 상대 경로 또는 절대 경로를 지정해야합니다. – Robert