2012-07-26 1 views
0

방금 ​​아주 못생긴 해킹을했습니다.동일한 모듈의 여러 아티팩트에 대한 종속성

두 개의 jar를 생성하는 모듈 A가 있습니다.

moduleA.jar and moduleA.test.jar 

module.test.jar은 동일한 저장소에 다른 프로젝트에서 사용되는 다른 저장소에 더 공개되지 않습니다.

은 내가 moduleB에 있음을 소비 할 수있는 방법 moduleA

<publications> 
    <artifact name="moduleA" type="jar" ext="jar" conf="compile"/> 

    <artifact name="moduleA.test" type="jar" ext="jar" conf="test"/> 
</publications> 

의 ivy.xml이 추가되었습니다. 나는 Maven이 모듈 당 여러 artifacts를 지원하지 않는다는 것을 알고 있으며, 이것이 IVY에 의해 지원된다는 것을 나는 읽었다. 난 그냥 쓰지 않는 것 같아.

내가 moduleB의 ivy.xml이 시도 : '이름'이후,

<dependency org="my.org" name="moduleA" rev="SNAPSHOT" conf="compile,test->default,test" /> 
<dependency org="my.org" name="moduleA.test" rev="SNAPSHOT" conf="compile,test->default,test" /> 

을하지만 이것은 분명히 작동하지 않았다 모듈하지 유물의 이름입니다. moduleA에서 :

<artifact name="moduleA" type="test.jar" ext="jar" conf="test"/> 

및 moduleB에 : 나는 type 속성을 사용하여 주위에 작업을했다

<dependency org="my.org" name="moduleA" rev="SNAPSHOT" conf="compile,test->default,test" /> 

이 일을하지만, 매우 추한 보인다. 다음과 같은 ANT 파일을 생성해야하기 때문에 :

moduleA-SNAPSHOT.test.jar 

동일한 모듈의 여러 아티팩트에 따라 달라지는 깔끔한 해결책은 없습니까?

이 질문에 ID를 다른 사람 : How do I solve Multiple artifacts of the module X are retrieved to the same file in Apache Ivy?

답변

1

는 모듈 A는이 같다고 가정하면

<info organisation="my.org" module="moduleA" .../> 

<configurations> 
    <conf name="compile description="???"/> 
    <conf name="test description="???"/> 
    .. 
</configurations> 

<publications> 
    <artifact name="moduleA" type="jar" ext="jar" conf="compile"/> 
    <artifact name="moduleA.test" type="jar" ext="jar" conf="test"/> 
</publications> 

moduleA.jar

<dependency org="my.org" name="moduleA" rev="latest.integration" conf="default->compile" /> 

을 검색합니다 다음 모듈 B 선언 모듈 B 선언 다음에 moduleA.test.jar가 검색됩니다.

<dependency org="my.org" name="moduleA" rev="latest.integration" conf="default->test" /> 

그것이 작동되도록 구성 매핑입니다 :

default->compile 
^  ^
|   | 
Local configuration 
      | 
      Remote configuration 

지방 구성이 "기본"일 필요는 없습니다. 물론 모듈 B도 구성을 사용한다면 그 중 하나를 사용할 수 있습니다.

+0

그것은 마술 덕분에 효과가있었습니다. 내가 배운 또 다른 일반적인 것은 confmapping conf1, conf2, conf3-> conf1, conf2, conf3을 혼동하지 않는 것입니다. 나쁜 습관입니다. –