2017-03-01 11 views
0

Ant w/Ivy에서 Maven으로 이동 중입니다. 이 작업의 일환으로 우리는 분류자를 사용하여 메이비 유물에 별도의 아이비 아티팩트를 사용하는 여러 개의 항아리가있는 프로젝트를 수행했습니다.Ivy가 분류자를 사용하여 jar에 전이 종속성을 가져 오지 않습니다.

새로운 Maven 프로젝트에는이 문제가 없습니다. 그러나 Google의 아이비 프로젝트에서는 분류 기준에 대해 pom.xml을 찾을 수 없습니다. 우리 메이븐 저장소에서

이 프로젝트의 항아리 모두를위한 하나의 pom.xml 자신이다 :

http://repo.vegicorp.com/l/com/vegicorp/foo/1.0.0/foo-1.0.0.pom 
http://repo.vegicorp.com/l/com/vegicorp/foo/1.0.0/foo-1.0.0.jar 
http://repo.vegicorp.com/l/com/vegicorp/foo/1.0.0/foo-1.0.0-client.jar 
http://repo.vegicorp.com/l/com/vegicorp/foo/1.0.0/foo-1.0.0-test.jar 

는 디버그 Ant 빌드의 출력을 보면, 나는 그것이 저희 메이븐 저장소에 찾고 볼 :

http://repo.vegicorp.com/com/vegicorp/foo/1.0.0/foo-1.0.0-client.pom 

그것은 pom.xml 파일의 이름으로 분류를 추가입니다! 그것은 항아리를 찾아서 다운로드 할 수 있지만 pom.xml이 없으면 의존성을 파악할 수 없습니다. 종속성이 다운로드되지 않기 때문에 빌드가 실패합니다.

ivysettings.xml에는 Pom 파일에 분류자를 추가하지 않았 음을 아이비에게 알리는 설정이 있다고 가정합니다. 그러나 나는 알아 내지 못했습니다.

그렇다면이 문제를 어떻게 해결할 수 있습니까? 내가 pom.xml 우리의 저장소 (이것은 Artifactory입니다)로 실종 수 있습니다 복사 할 수 있지만 할 수 있는지 잘 모르겠습니다. (아마도이 ​​문제를 해결할 수있는 Artifactory 설정이 있을까요?).

답변

0

lBiblio resolver을 사용하려면 아이비에 답변해야합니다. 그 중 하나가 '아무튼 경우 거짓

에 usepoms 플래그를 설정 하여 m2compatible 플래그를 사용하는 경우

, 당신은 리딩의 사용을 해제 할 수 있습니다 : 당신은 lBilbio 링크에서 리딩, 견적을 찾고 비활성화 할 수 있습니다 으로 더 세분화 된 설정을 얻을 수 있습니다. 페이지 맨 아래에는 분류 자 ​​속성이 없습니다.

또한 (모든 리졸버의 경우) 아티팩트를 실제로 찾으려면 이슈 패턴을 올바르게 설정해야 할 수 있습니다.

+0

IBibilo 해결 프로그램을 사용하고 있습니다. 나는 내가 다운로드하는 항아리의 의존성을 찾아야하기 때문에 담비의 사용을 금지하고 싶지 않다. 나는 packager resolver를 설정하려고 노력할 것이다. –

+0

packager resolver에 문제가 있습니다. 분류자를 보거나 분류자를 볼 수 없으므로 POM 또는 JAR을 찾을 수 있습니다. Grr. –

0

나는 주위에 일을 발견했거나 어쩌면 이것이 전체 시간에 해왔어야하는 방법 일 수 있습니다.

ivy.xml 파일에 이런 식으로 의존성을 정의했다 :

<dependency org="com.vegicorp" name="foo" version="1.0" 
    conf="compile->default"/> 

모두가 <dependency> 실체없이 하위 기관에서하고 그냥 잘 작동합니다. 기본적으로 pom.xml을 찾은 다음 ivy.xml 종속 파일로 변환하고 jar도 다운로드했습니다. 어떤 하위 기관으로 <dependency> 기업 내부에 최선을 다하는,

<dependency org="com.vegicorp" name="foo" version="1.0" 
    conf="compile->default" maven:classifier="client"/> 

다시 우리가 분류를 추가하기 시작했을 때

, 우리는 이런 식으로했다.그런 다음 Ivy는 com/vegicorp/foo/1.0.0/foo-1.0.0-client.jar에서 jar 파일을 찾습니다.이 파일은 com/vegicorp/foo/1.0.0/foo-1.0.0-client.com에 POM을 찾을 수 없습니다. 우리는 분류자를 가진 서드 파티 항아리가 2 ~ 3 개 밖에 없기 때문에 전에는 이것을 발견하지 못했습니다. 그리고이 항아리 중 다른 항아리에는 의존성이 없었습니다. 관련 POM없이 jar 파일을 다운로드하는 것은 중요하지 않습니다.

jar가 다른 jar 종속성을 가지고 있기 때문에 우리는 분류자를 사용하여 자신의 jar를 정의하기 시작했습니다. 나는 <artifact> 엔티티를 사용한다는 점에서 분류를 넣으면

그러나, 모든 일 :

<dependency org="com.vegicorp" name="foo" version="1.0" 
    conf="compile->default"> 
    <artifact name="foo" ext="jar" maven:classifier="client"/> 
</dependency> 

아이비 com/vegicorp/foo/1.0.0에서 저장소의 정확한 위치를 발견하고 com/vegicorp/foo/1.0.0/foo-1.0.0.pom의 분류없이 POM 다운로드 . 그런 다음이 위치에있는 분류기로 이슈를 찾습니다. com/vegicorp/foo/1.0.0/foo-1.0.0-client.jar