2010-06-07 8 views
4

개미, 아이비 및 넥서스 리포 관리자를 사용하여 아티팩트를 작성하고 저장합니다. 나는 모든 것을 작동시킬 수있었습니다 : 의존성 해결과 출판. 문제가 생길 때까지 ... (물론!).Ivy and Snapshots (Nexus)

넥서스의 '릴리스'저장소에 게시했는데 '재배포 금지'(설정 변경을 '재배포 허용'으로 설정 한 경우에도 마찬가지 임) (실제로는 절름발이 UI 임). 어떻게 화나게했는지 상상할 수 있습니다.

어쨌든, 이제는 모든 것을 '넥서스'의 '스냅 샷'저장소를 사용하도록 전환해야합니다. 문제는이 문제가 내 퍼블리싱. 광범위한 인터넷 검색을 포함하여 다양한 시도를했는데 아무 것도 얻지 못했습니다. 잘못된 PUT 요청 (오류 코드 400)이 있습니다.

이 작업을 수행 한 사람이 제공 할 수 있습니까? 나 포인트 내가 잃어버린 것에 대해서.

많은 감사,

알라 참고하시기 바랍니다

가 여기 내 구성입니다 :

내가 스냅 샷을 얻기에 어떤 시도를 제거한

참고가 실제로 있었는지 몰랐로 일하기 (잠재적으로) 유용하고 완전한 guff는 무엇 이었습니까. 그러므로 이것은 작동중인 릴리스 전용 설정입니다.

또한 정보 용으로 만 XXX-API ivy.xml을 추가했음을 유의하십시오. xxx-common을 게시 할 수는 없지만 (심지어 종속성조차도 없음)

개미 작업 :

XXX 공통 프로젝트 :

<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"> 
    <info 
     organisation="com.myorg.xxx" 
     module="xxx_common" 
     status="integration" 
     revision="1.0"> 
</info> 
<publications> 
    <artifact name="xxx_common" type="jar" ext="jar"/> 
    <artifact name="xxx_common" type="pom" ext="pom"/>  
</publications> 
    <dependencies> 
    </dependencies> 
</ivy-module> 

XXX-API 프로젝트 :

아이비 파일의

<target name="publish" depends="init-publish"> 

    <property name="project.generated.ivy.file" value="${project.artifact.dir}/ivy.xml"/> 
    <property name="project.pom.file" value="${project.artifact.dir}/${project.handle}.pom"/> 

    <echo message="Artifact dir: ${project.artifact.dir}"/> 
    <ivy:deliver 
    deliverpattern="${project.generated.ivy.file}" 
    organisation="${project.organisation}" 
    module="${project.artifact}" 
    status="integration" 
    revision="${project.revision}" 
    pubrevision="${project.revision}" /> 

    <ivy:resolve /> 

    <ivy:makepom 
    ivyfile="${project.generated.ivy.file}" 
    pomfile="${project.pom.file}"/> 

    <ivy:publish 
    resolver="${ivy.omnicache.publisher}" 
    module="${project.artifact}" 
    organisation="${project.organisation}" 
    revision="${project.revision}" 
    pubrevision="${project.revision}" 
    pubdate="now" 
    overwrite="true" 
    publishivy="true" 
    status="integration" 
    artifactspattern="${project.artifact.dir}/[artifact]-[revision](-[classifier]).[ext]" 
    /> 


</target> 

커플 내부 의존성의 아이디어를 제공하기 위해

<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"> 
    <info 
     organisation="com.myorg.xxx" 
     module="xxx_api" 
     status="integration" 
     revision="1.0"> 
</info> 
<publications> 
    <artifact name="xxx_api" type="jar" ext="jar"/> 
    <artifact name="xxx_api" type="pom" ext="pom"/>  
</publications> 
    <dependencies> 
     <dependency org="com.myorg.xxx" name="xxx_common" rev="1.0" transitive="true" /> 
    </dependencies> 
</ivy-module> 

IV Y Settings.XML의 :

<ivysettings> 

<properties file="${ivy.project.dir}/project.properties" /> 


<settings 
    defaultResolver="chain" 
    defaultConflictManager="all" /> 

<credentials host="${ivy.credentials.host}" realm="Sonatype Nexus Repository Manager" username="${ivy.credentials.username}" passwd="${ivy.credentials.passwd}" /> 

<caches> 
    <cache name="ivy.cache" basedir="${ivy.cache.dir}" /> 
</caches> 

<resolvers> 
    <ibiblio name="xxx_publisher" m2compatible="true" root="${ivy.xxx.publish.url}" /> 
    <chain name="chain"> 
    <url name="xxx"> 
    <ivy pattern="${ivy.xxx.repo.url}/com/myorg/xxx/[module]/[revision]/ivy-[revision].xml" /> 
    <artifact pattern="${ivy.xxx.repo.url}/com/myorg/xxx/[module]/[revision]/[artifact]-[revision].[ext]" /> 
    </url>   
    <ibiblio name="xxx" m2compatible="true" root="${ivy.xxx.repo.url}"/> 
    <ibiblio name="public" m2compatible="true" root="${ivy.master.repo.url}" />  
    <url name="com.springsource.repository.bundles.release"> 
    <ivy pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
    <artifact pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
    </url> 
    <url name="com.springsource.repository.bundles.external"> 
    <ivy pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
    <artifact pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
    </url> 
    </chain> 
</resolvers> 



</ivysettings> 
+0

모든 개정 변수에 -SNAPSHOT을 추가했음을 유의해야합니다. 아이비가 해결 된 * .xml 담쟁이 파일을 만들지 못했을 때 실패했습니다 ... 나는 어느 곳에서나 찾을 수 없었습니다. ( –

답변

3

w00h00t.

(전 세계에 도움을 요청하는 것에 대해 카타르시스가 있습니다. 일반적으로 응답 없이도 문제를 훨씬 빠르게 수정합니다.)

어쨌든, 관심있는 것은 몇 가지에 내려와 :

가) 모든 개정에 -snapshot의 추가. 이것은 두 번째 ivy.xml -> ivy.SNAPSHOT.xml을 포크하고 아이비 앤트 작업에서이를 명시 적으로 참조하는 것과 관련이 있습니다. b)이 파일이 수동으로 추가 된 점을 감안할 때 전체 빌드 트리 파일을보고 릴리스 및 스냅 샷 흐름에 대한 병렬 경로를 제공해야했습니다. 제 의견으로는 이것은 절름발이입니다. 그러나 다른 유형의 흐름을 고안 할 가능성은 매우 낮습니다. 아마도 이것은 부 풀리지 않을 것이며, 2 가지 병렬 흐름이 그대로 유지 될 것입니다. c) 아이비에 다양한 힌트를 지정하여 스냅 샷의 업데이트를 확인했습니다. 예 : 리졸버에 checkUpdated="true"changePattern=".*-SNAPSHOT"스냅 샷 물건 자동 통합이 있었다면 여전히

<modules org="myorg" name=*" resolveMode="dynamic" /> 

의 추가, 그것은 좋은 것입니다. 아이비 부분의 비트 (선택 사항) 영리함. 그것을 직면하자, maven repos와 같은 넥서스는 정말로 유용하며 아이비를 사용하여 확실히 maven의 진부한 빌드 프로세스를 얻는다. I 은 넥서스를 사용하는과 같습니다.

어쨌든. 혹시라도이 문제에 대해 더 궁금한 점이 있으면 자유롭게 생각해보십시오.

+1

"세상에 도움을 청하는 것에 대해 카타르시스가 있습니다"- 고무 덕킹 "- https://en.wikipedia.org/wiki/Rubber_duck_debugging :) –

1

이것이 2 세트의 구성 문제를 해결하는 데 도움이되는지 확실하지 않지만 최소한 build.xml은 조금 더 간단 할 것입니다.

ivy.xml의 info 요소에 대한 개정 속성을 $ {project.revision}로 정의 할 수 있습니다.

그런 다음 build.xml의 ivy 요소에 대해 revision = "$ {project.revision}"속성을 생략 할 수 있습니다. 넥서스에 게시 할 때 https://stackoverflow.com/a/8853823/1148030

0

그것은 주목해야한다, 유일한 필요한 단계는 개정에 '-snapshot'를 포함하는 것입니다

이에 대한 내 대답은 예를 들어, 다른 질문을 참조하십시오. 대답에 나열된 다른 단계는 선택 사항/개선 사항입니다. 게시 된 항목을 아래로 당기기 위해서는 수정본에 '-SNAPSHOT'을 추가해야합니다.