동일한 클래스가 모두 포함 된 두 개의 다른 병이있는 프로젝트가 있습니다. Jar "B"앞에 Jar "A"의 클래스를 사용하는 것이 필요합니다. 일반적인 자바 컴파일 (Ant와 함께)에서는 클래스 경로 자체의 순서를 지정할 수 있습니다. 이 방법으로, Jar "A"의 클래스가 Jar "B"의 클래스보다 먼저 사용된다는 것을 보증 할 수 있습니다.Ivy - Ivy에서 컴파일/런타임 클래스 경로 지정
아이비에서이 작업을 수행 할 수있는 방법이 있습니까? 내가 할 수있는,
<ivy:cachepath pathid="compile.foo.classpath"
conf="foo"/>
<ivy:cachepath pathid="compile.normal.classpath"
conf="compile"/>
다음 <javac/>
에 :
<dependency org="com.vegibank" name="a.jar"
rev="1.0" conf="foo->default"/>
<dependency org="com.vegibank" name="b.jar"
rev="1.0" conf="compile->default"/>
다음 만들기를 두 개의 분리 된 pathclass 참조 : 나는이 일을 생각할 수
있는 유일한 방법은 내 ivy.xml
에 두 개의 분리 된 구성을 만드는 것입니다 경로를 지정하십시오 :
<javac ...>
<classpath refid="compile.foo.classpath"/>
<classpath refid="compile.normal.classpath"/>
</javac>
그러나 Ivy가 해결을 수행 할 때 jar가 클래스 경로에로드되는 방식을 보장하는 방법이 있어야한다고 가정합니다.
이 방법이 있습니까?
당신의 해결책은 좋아 보인다. 솔직히 말해서 나는 (클래스 패스에서 같은 클래스를 혼합하는) 그 문제에 결코 직면 해본 적이 없다. 나는 이것이 이상한 제 3 자 포장 문제라고 생각하고 있나? –
@ MarkO'Connor - 위에서 언급 한 방식대로이 작업을 끝내 었습니다. 새 구성을 작성하여 해당 항아리를 먼저 배치 할 수 있습니다. 개발자가 문제를 해결했습니다. 구식의 jar의 클래스는, 메소드를 열거자를 돌려주는 것으로서 처리해, 새로운 Jar의 클래스는,이 메소드를 반복자를 돌려주는 것으로서 처리했습니다. 2 개 또는 3 개의 소스 파일을 약간 수정하여 수정했습니다. 물론 개발자는 문제를 수정했지만 컴파일되지 않아서 제대로 작동하는지 확인하지 못했습니다. 쓸데없는 항아리 클래스가 사용 중이기 때문에 컴파일 할 수 없습니다. 나는 고칠 수밖에 없었다. –