2017-10-03 2 views
0

자바가 아닌 프로젝트로 구성된 다중 프로젝트 gradle (버전 2.1 !!) 빌드가 있습니다.자바, 이어 또는 전쟁 플러그인이없는 Gradle Nexus 및 FlatDir 배포

생성 된 아티팩트 (.tar.gz 파일)를 Nexus 및 디렉토리에 배포하고 싶습니다.

은 현재 내가 루트 build.gradle 파일의 subprojects 내부 repositories 블록의 각 하위 프로젝트도 다시 repositories 블록의 루트 build.gradle에 저장소를 정의합니다.

base 플러그인을 루트 프로젝트에 적용하고 maven-publish 플러그인을 배포 할 아티팩트가있는 모든 하위 프로젝트에 적용합니다.

하지만이 번호 :

는 여기 지침을 따르려고 노력 일했다. :-(

다음

내가 할 수있는 작업은 다음과 같습니다.

... 
# apply the maven-publish plugin only to sub-projects that produce artifacts that should be uploaded. 
apply plugin: 'maven-publish' 

publishing { 
    publications { 
     tarFiles (MavenPublication) { 
      artifact compressTar 
     } 
    } 

    repositories { 
     add rootProject.repositories.fsShare 
     add rootProject.repositories.nexusDeploy 
    } 
} 
... 

compressTar 내 사용자 정의 I 업로드 할 아티팩트를 생성 Tar 작업입니다

나는 다음과 같은 오류가 ./gradlew publishTarFilesPublicationToNexusDeployRepository를 실행하면 :

Execution failed for task ':mySubProject:publishTarFilesPublicationToNexusDeployRepository'. 
> Failed to publish publication 'tarFiles' to repository 'nexusDeploy' 
    > Failed to retrieve remote metadata myRootProject:mySubProject:0.0.0.0-SNAPSHOT/maven-metadata.xml: Could not transfer metadata myRootProject:mySubProject:0.0.0.0-SNAPSHOT/maven-metadata.xml from/to remote (https://myProject.nexus.url:443/nexus3/repository/builds/): Could not get resource 'myRootProject/mySubProject/0.0.0.0-SNAPSHOT/maven-metadata.xml' 

uploadArchives을 실행하면 작업은 성공하지만 아무 것도 업로드되지 않습니다. uploadArchives 작업처럼 보이는 출력은 maven-plugin이 적용되지 않은 하위 프로젝트에서만 실행됩니다.

어떻게해야할까요? 어떤 플러그인을 언제/어디에 적용해야합니까?

+1

작동하지 않는 기능은 무엇입니까? 어떤 오류가 있습니까/gradle의 출력이 실행되고 있습니까? – Opal

답변

0

분명히 여기서 두 개의 관련없는 "문제"가있었습니다.

문제 1) : 내가 넥서스에 게시 할 수 없습니다와 Failed to retrieve remote metadata -error 가지고 :

답변 1) : 나는 동의하지 구성된 저장소에 "스냅 샷"을 게시하려고했다 " SNAPSHOT "빌드. 빌드 버전의 이름을 1.2.3.4-SNAPSHOT에서 다른 것으로 변경하면 (예 : 1.2.3.4-SNAPSHOT-dev 이상 1.2.3.build4`) 괜찮 았습니다.

문제점 2) 'flatDir'저장소에 게시가 작동하지 않았습니다. maven-publish 플러그인은 게시 작업을 생성하지 않았습니다.

답변 2) maven-publish를 사용하여 디렉토리에 게시하려면 flatDir이 maven-publish 플러그인이 게시 할 수있는 저장소로 인식되지 않는 것 같습니다.다음과 같이 '디렉토리'저장소를 정의하면 다음과 같이 작동합니다.

maven { 
    name "fsShare" 
    url "/share/pkg" 
}