2011-02-09 3 views
3

Hudson 서버를 통해 지속적으로 빌드 할 수있는 작은 Java 프로젝트 설정이 있습니다. post-build 단계로서 Artifactory 서버에 빌드 아티팩트를 게시하고 싶습니다. 자연스럽게, 이것을 촉진하기 위해 Hudson-Artifactory 플러그인을 사용하고 있습니다. 로컬 게시는 정상적으로 작동하는 것처럼 보입니다. 두 개의 아티팩트 (.jar 파일)와 해결 된 ivy.xml 파일을 예상대로 게시합니다. 그러나 허드슨 서버에서 빌드를 요청하면 두 개의 아티팩트 중 하나만 게시됩니다.Hudson 플러그인이 Artifactory에 모든 아티팩트를 게시하지 않음

빌드는 다음 아티팩트를 생성합니다

ftpSvc.jar 
ftpSvc-lib.jar 

내 ivy.xml 파일은 다음과 같다 : 두 개의 유물이 명확하게 <publications> 섹션에서라고

<?xml version="1.0" encoding="ISO-8859-1"?> 
<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="esf" 
      status="integration" 
      module="ftpSvc" 
      revision="SNAPSHOT" /> 

    <publications> 
     <artifact name="ftpSvc" ext="jar"/> 
     <artifact name="ftpSvc-lib" ext="jar" type="lib" /> 
    </publications> 

    <!--list the dependencies of this project--> 
    <dependencies> 
     <dependency org="commons-net" name="commons-net" rev="1.3.0" /> 
    </dependencies> 
</ivy-module> 

. 내 build.xml 파일의 빌드 타겟은 다음과 같습니다 빌드 디렉토리에서

<target name="publish_local" description="publish artifacts locally"> 
    <echo>organisation: ${ivy.organisation}</echo> 
    <echo>module: ${ivy.module}</echo> 
    <echo>status: ${ivy.status}</echo> 
    <echo>revision: ${ivy.revision}</echo> 
    <echo>local dir: ${ivy.default.ivy.user.dir}</echo> 

    <ivy:publish 
     resolver="local" 
     update="true" 
     verwrite="true" 
     srcivypattern="${bundle.jar.dir}/ivy.xml" 
     artifactspattern="${bundle.jar.dir}/[artifact].[ext]" /> 
</target> 

artifactspattern 잡고 정의 된 모든 유물 - 공상 아무것도 여기에 가고있다. 마지막으로, 내 ivysettings.xml 파일의 해결 체인 (서버 이름이 무죄를 보호하기 위해 변경) 다음과 같습니다

<resolvers> 
    <chain name="main"> 
     <ibiblio name="main" m2compatible="true" root="http://my.server.employer.com:8080/artifactory/repo" /> 

     <filesystem name="local"> 
      <ivy pattern="${ivy.default.ivy.user.dir}/local/[organisation]/[module]/[revision]/ivy-[revision].xml" /> 
      <artifact pattern="${ivy.default.ivy.user.dir}/local/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
     </filesystem> 
    </chain> 
</resolvers> 

위에서 언급 한 로컬 잘 작품을 게시 그것은이 모든 오히려 일상적인 물건합니다. 예상대로

publish_local: 
    [echo] organisation: esf 
    [echo] module: ftpSvc 
    [echo] status: integration 
    [echo] revision: SNAPSHOT 
    [echo] local dir: C:\Users\myusername\.ivy2 
[ivy:publish] :: publishing :: esf#ftpSvc 
[ivy:publish] published ftpSvc to C:\Users\myusername\.ivy2/local/esf/ftpSvc/SNAPSHOT/ftpSvc-SNAPSHOT.jar 
[ivy:publish] published ftpSvc-lib to C:\Users\myusername\.ivy2/local/esf/ftpSvc/SNAPSHOT/ftpSvc-lib-SNAPSHOT.jar 
[ivy:publish] published ivy to C:\Users\myusername\.ivy2/local/esf/ftpSvc/SNAPSHOT/ivy-SNAPSHOT.xml 

두 jar 파일과 해결 ivy.xml 파일이 게시 된 얻을 : 이클립스를 빌드 할 때 다음 콘솔 출력에서 ​​들여다이다. 내 허드슨 서버에서 내가 thusly 히 구성된 Artifactory 구성 설정 (다시, 몇 가지 세부 사항이 내 진정한 슈퍼 히어로의 정체성을 모호하게 변경되었습니다)이있어 :

Artifactory 서버 : http://my.server.employer.com:8080/artifactory
대상 저장소 : target-repository
아이비 패턴 : [organisation]/[module]/[revision]ivy-[revision].xml
아티팩트 패턴 : 당신이 볼 수 있듯이 "[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"

가, 아이비와 유물 패턴이 정확히 내 ivysettings.xml 파일에서 내 로컬 리졸버의 패턴과 동일. 따라서 Hudson 서버에서 빌드를 실행하면 Artifactory 서버에 정확히 동일한 아티팩트가 게시 될 것으로 예상됩니다.

이의 내 허드슨 서버에 최신 빌드에서 콘솔 출력을 살펴 보자 :

publish_local: 
    [echo] organisation: esf 
    [echo] module: ftpSvc 
    [echo] status: integration 
    [echo] revision: SNAPSHOT 
    [echo] local dir: /usr/share/tomcat6/.ivy2 
[ivy:publish] :: publishing :: esf#ftpSvc 
Collecting Module information for module: ftpSvc 
Module location: /usr/share/tomcat6/.hudson/jobs/ftpSvc-ivy/workspace/trunk/out/jars/ftpSvc.jar 
[ivy:publish] published ftpSvc to /usr/share/tomcat6/.ivy2/local/esf/ftpSvc/SNAPSHOT/ftpSvc-SNAPSHOT.jar 
Collecting Module information for module: ftpSvc 
Module location: /usr/share/tomcat6/.hudson/jobs/ftpSvc-ivy/workspace/trunk/out/jars/ftpSvc-lib.jar 
[ivy:publish] published ftpSvc-lib to /usr/share/tomcat6/.ivy2/local/esf/ftpSvc/SNAPSHOT/ftpSvc-lib-SNAPSHOT.jar 
Collecting Module information for module: ftpSvc 
Module location: /tmp/ivy2450884590736960955.xml 
[ivy:publish] published ivy to /usr/share/tomcat6/.ivy2/local/esf/ftpSvc/SNAPSHOT/ivy-SNAPSHOT.xml 
Build finished triggered 
Deploying artifact: http://my.server.employer.com:8080/artifactory/target-repository/esf/ftpSvc/SNAPSHOT/ftpSvc-SNAPSHOT.jar 
Deploying artifact: http://my.server.employer.com:8080/artifactory/target-repository/esf/ftpSvc/SNAPSHOT/ftpSvc-SNAPSHOT.xml 
Deploying build info to: http://my.server.employer.com.com:8080/artifactory/api/build 

부시 전 '티 EFF의를!? 다시 한번, 로컬 게시는 Jud 및 ivy.xml 파일을 허드슨 서버의 로컬/esf/ftpSvc/SNAPSHOT/디렉토리에 게시하여 정상적으로 작동하는 것으로 보입니다. 반면에 Artifactory 플러그인은 완전히 잘못되었습니다. 두 항아리 중 하나를 게시하는 데 실패 할뿐만 아니라 ivy.xml 파일의 이름을 잘못 바꿉니다.

여기에서 일어나는 일에 대해 밝힐 수있는 허드슨/아이비/인공물 전문가가 있습니까? 정확한 동작을 보이는 여러 프로젝트가 있습니다. 이 문제를 해결하기위한 모든 도움을 주시면 감사하겠습니다.

답변

0

안녕하세요, 저는 플러그인을 사용하지 않았지만 ftpSvc-lib이라는 이름에서 대시를 제거하고 요소에서 type="lib"을 제거하려고합니다.

관련 문제