2012-01-17 2 views
3

Ivy와 사무실의 웹 서버에서 이슈 및 아이비 파일을 찾는 URL 확인 프로그램으로 Eclipse 프로젝트를 설정했습니다. 모든 것이 아름답게 작동합니다.Ivy를 사용하여 로컬로 해결하는 방법

다른 프로젝트에 대한 종속성이있는 몇 가지 프로젝트가 있는데 이러한 종속성을 "로컬로 게시"할 수 있도록 Ivy 구성을 조정하여 종속적 인 다운 스트림 프로젝트에서 로컬로 확인할 수 있도록하고 싶습니다. 이렇게하면 개발자는 한 프로젝트에서 변경 작업을 수행 할 수 있으며 변경 사항이 다른 프로젝트에서 변경되는 것을 볼 수 있습니다. 우리의 공식 (웹 서버) 저장소에 게시 할 필요없이 모두. 그런 다음

<target name="publish-locally" depends="clean,dist"> 
    <ivy:publish resolver="local" overwrite="true" pubrevision="${ivy.new.revision}"> 
     <artifacts pattern="${distDir}/[artifact].[ext]" /> 
</ivy:publish> 
</target> 

내가 DepProj 중 하나의 ivy.xml 파일을 수정 :

는 우선 다운 스트림 프로젝트에 대한 종속성이 프로젝트 (의이 DepProj를 호출하자)에 게시 - 로컬 작업을 추가 님의 다운 스트림 프로젝트는 DownstreamProj입니다.

<dependency org="ourOrg" name="DepProj" rev="latest.integration" conf="*->*"/> 

저는 이제 둘을 연결하는 것에 질식합니다. 파일 시스템 분석기를 사용하려면 ivy.settings 파일을 조정해야합니다. DepProj이 로컬에 게시되면 먼저 clean,이어서 dist이 실행됨을 알 수 있습니다. dist 대상은 DepProj/dist/DepProj.jar 아래에 JAR을 만듭니다.

필자는 파일 시스템 분석기 (어쨌든)를 dist 디렉토리로 지정할 필요가 있다고 생각합니까? 그러나 다시 DepProj은 내가 로컬로 게시하고 싶은 유일한 프로젝트가 아닙니다.

여기 퍼즐의 대부분을 가지고 있는데, 나는 몇몇 점들을 연결하는 데 문제가 있습니다.

어떤 종류의 흙 잣대로 올바른 방향으로 움직일 수 있습니까? 유용한 코드 예제는 항상 크게 감사합니다! 감사!

답변

4

file system resolver을 정의하고 자신 만의 ivysettings.xml을 만들어야합니다.

게시 할 수있는 특별한 디렉토리를 지정해야합니다. 이것은 프로젝트 외부의 어딘가에 있어야합니다.

<filesystem name="local" checkmodified="true"> 
     <ivy pattern="${basedir}/../repo/[module](-[branch])/[revision]/[artifact](-[branch])-[revision].[ext]" /> 
     <artifact pattern="${basedir}/../[module]/[revision]/[artifact](-[branch])-[revision].[ext]" /> 
    </filesystem> 

이것은 완전히 정상적인 저장소처럼 동작합니다. 문제 해결 아티팩트가 캐시로 복사되고 거기에서 검색 위치로 복사됩니다.

게시 아티팩트가 여기에 복사됩니다. 이 호출에 의해 자동으로 읽을 수 있습니다

<property name="ivy.settings.file" value="${path_to_file}/ivysettings.xml"/> 

: 설정을 활성화

<ivy:settings /> 

당신은 ivysettings.xml의 경로를 설정할 수 있습니다.일식에 대한

<resolvers> 
    <url name="remote"/> 
    <filesystem name="local" checkmodified="true" /> 

    <chain name="ourOrg" dual="true" latest="time"> 
     <resolver ref="local"/> 
     <resolver ref="remote"/> 
    </chain>  
</resolvers> 

    <modules> 
    <!-- resolver für readybank module--> 
    <module organisation="ourOrg" resolver="ourOrg"/> 
    </modules> 

IvyDe이 어떤 프로젝트를위한 위대한 작품을 작업 공간 해결 프로그램을 가지고 :

당신은 또한 특수 모듈의 체인을 만들 수 있습니다

, 즉 저장소에 먼저 파일 시스템에서 다음 보인다 일식에서 엽니 다.

+0

감사합니다. – IAmYourFaja

+1

이것은 다중 프로젝트 빌드 예제이며, ivy 소스 저장소에서 찾을 수 있습니다. https://svn.apache.org/repos/asf/ant/ivy/core/trunk/src/example/multi-project/ –

관련 문제