2009-11-19 2 views
6

많은 프로젝트에 대해 동일한 수의 구성을 포함하는 상당히 큰 ivy.xml이 있습니다.ivy.xml에 파일을 포함시키는 방법은 무엇입니까?

이 큰 반복 부분을 일반적인 포함 파일로 분해하고 싶습니다. 어떻게 든이 일을 할 수 있다고 설명하는 문서를 찾을 수 없습니다.

이것이 가능한지 알 수있는 사람은 누구입니까?

EDIT : 몇 가지 추가 생각을 한 후, 이것은 의도적으로 수행 할 수 없다고 생각합니다. Ivy 파일은 하나의 응집 단위로되어 있으며 파일 기반 참조가 포함되어서는 안됩니다. 다른 아이비 모듈에 대한 참조 만 ...

답변

9

당신이 의존하는, 아이비 메타 모듈을 만들 수 있습니다

<?xml version="1.0"?> 
    <ivy-module version="2.0"> 
     <info organisation="com.example" module="common-libs"/> 
      <configurations> 
      <conf name="runtime" transitive="true" visibility="public" /> 
      <conf name="master" transitive="true" visibility="public" /> 
      <conf name="compile" transitive="true" visibility="public" /> 
      <conf name="default" transitive="true" visibility="public" extends="master" /> 
      </configurations> 
      <dependencies> 
       <dependency org="oracle" name="ojdbc14_g" rev="10.2.0.3" 
conf="compile->compile(*),master(*);runtime->runtime(*);master->master(*)"/> 
       <dependency org="tomcat" name="servlet-api" rev="6.0.16" 
conf="compile->compile(*),master(*);runtime->runtime(*);master->master(*)"/> 
       <dependency org="junit" name="junit" rev="4.3" 
conf="compile->compile(*),master(*);runtime->runtime(*);master->master(*)"/> 
      </dependencies> 
    </ivy-module> 

그리고 전형적인 프로젝트 :

<?xml version="1.0"?> 
    <ivy-module version="2.0"> 
    <info organisation="com.example" module="myproject"/> 
     <configurations> 
     <conf name="runtime" transitive="true" visibility="public" /> 
     <conf name="master" transitive="true" visibility="public" extends="runtime"/> 
     <conf name="compile" transitive="true" visibility="public" /> 
     <conf name="default" transitive="true" visibility="public" extends="master" /> 
     </configurations> 
     <dependencies> 
     <dependency org="com.example" name="common-libs" rev="latest.release" 
      conf="compile->compile(*),master(*);runtime->runtime(*);master->master(*)"/> 
     </dependencies> 
    </ivy-module> 
다음 해당 일반적인 모든 패키지 및에 다른 모든 프로젝트 이적 의존성을 통해 공용 라이브러리를 해결해야

여기에서는 Maven 해석기의 POM-> Ivy 변환에서 전통적으로 명명 된 명명 규칙을 사용하고 있습니다. 그러나 여러분이 이해할 수있는 방식으로 설정 이름을 매핑 할 수 있습니다. 나는 ivy : install 태스크를 사용하여 Maven 모듈을 Ivy 저장소에 복사하는 경향이 있으므로 대부분의 경우 기본 ivy.xml을 사용한다. IvyRoundup을 사용하는 경우 기본적으로 "기본"구성을 추이 적으로 매핑해야합니다.

2

개미에서 아이비를 사용하고 있고 개미 1.6 이상을 실행중인 경우 다음을 사용할 수 있습니다. <import> 작업은 개미 빌드 파일 내에 빌드 파일 조각을 포함시킵니다. 참조 된 파일은하지만, 완전한 Ant 빌드 파일이 있어야합니다 :

<?xml version="1.0"?> 
<!DOCTYPE project [ 
     <!ENTITY common SYSTEM "common.xml"> 
]> 
<project name="my-project" default="usage" basedir="."> 
    <target name="setup"> 
    ... 
    </target> 

    &common; 
    ...  
</project> 

common.xml의 내용을 포함 그대로됩니다

<?xml version="1.0"?> 
<project name="my-project" default="usage" basedir="."> 
    <target name="setup"> 
    ... 
    </target> 

    <import file="./common.xml"/> 
    ... 
</project> 

당신은 또한 당신의 ivy.xml 또는 build.xml 파일 내에서 표준 XML 구문을 사용할 수 있습니다 여기에 &common; 엔티티를 배치했습니다.

(이 예에서는 파일 이름 common.xml은 XML 파서에 의해 포함하는 XML 파일에 상대적으로 해석됩니다. 또한 절대 file: 프로토콜 URI를 사용할 수있다.)