2011-02-10 1 views
0

프로젝트 용 Java 라이브러리를 작성하고 있습니다. 종속성 관리 및 로컬 저장소에 대한 JAR 게시에 Ivy를 사용합니다.Apache Ant & Ivy : 잘못된 종속성이 생성되었습니다.

ivy.xml을 업데이트하면 (즉, 새 외부 라이브러리를 추가 할 때) 모든 이슈가 검색되고 사용됩니다.

그러나 라이브러리를 게시 할 때 Ivy에서 생성 된 ivy-module xml에 누락 된/잘못된 참조가 포함되어 있습니다 (종종 외부 라이브러리의 이전 버전까지).

내가 내 build.xml 파일에있는 대상 :

<target name="publish" depends="jar" description="Publish this project in the ivy repository"> 
    <property name="revision" value="${version}" /> 
    <ivy:publish artifactspattern="${jar.dir}/[artifact].[ext]" resolver="projects" pubrevision="${revision}" status="release" update="true" overwrite="true" /> 
    <echo message="project ${ant.project.name} released with version ${revision}" /> 
</target> 

을 그리고 이것은 내 ivy.xml입니다 :

<ivy-module version="2.0"> 
<info organisation="xyz" module="zyx"/> 
<configurations defaultconfmapping="*->*,!javadoc,!sources" /> 
<dependencies> 
    <dependency org="ch.qos.logback" name="logback-classic" rev="0.9.28" /> 
    <dependency org="commons-lang" name="commons-lang" rev="2.5"/> 
    <dependency org="commons-io" name="commons-io" rev="2.0"/> 
    <dependency org="org.simpleframework" name="simple-xml" rev="2.4.1"> 
     <exclude module="stax"/> 
     <exclude module="stax-api"/> 
    </dependency> 
    <dependency name="AlmaUtils" rev="1.3.10"/> 
    <!-- Reflections --> 
    <dependency org="org.reflections" name="reflections" rev="0.9.5-RC2"> 
     <exclude module="logback-classic"/> 
    </dependency> 
    <!-- Bouncycastle cryptography --> 
    <dependency org="org.bouncycastle" name="bcprov-ext-jdk16" rev="1.45"/> 
    <dependency org="jdom" name="jdom" rev="1.1"> 
     <exclude module="xerces"/> 
     <exclude module="xalan"/> 
    </dependency> 
    <!-- Scripting --> 
    <dependency name="js-engine" rev="1.0"/> 
    <dependency org="rhino" name="js" rev="1.7R2"/> 
    <!-- JGA --> 
    <dependency name="jga" rev="0.8.1"/> 
</dependencies> 

답변

2

이 아마도 당신이에 다음 대상을 추가해야합니다 귀하의 빌드.

<target name="clean-all" depends="clean" description="Purge ivy cache"> 
    <ivy:cleancache/> 
</target> 

이렇게하면 슬레이트를 깨끗이 닦고 빌드가 완전히 깨끗한 지 확인합니다.

Ivy는 기본적으로 최적화 된 다운로더이지만 복잡한 종속 트리의 버전을 업그레이드 할 때 잘못된 캐싱 결정을 내릴 수 있습니다. Maven 빌드는 로컬 저장소가 매우 큰 경우에도이 문제의 영향을받습니다.