2017-04-12 23 views
2

Spring's dependency management plugin을 사용하여 종속성 버전 목록을 정의하는 Gradle 프로젝트가 있습니다. 또한 Maven plugin을 사용하여 프로젝트를 Maven 저장소에 배포합니다.Nexus에 배포 할 Gradle Maven 플러그인을 사용하여 Maven POM 전용 (BOM) 빌드를 만들 수 있습니까?

Maven BOM (bill of materials)으로 배포하여 다른 Gradle 프로젝트에서 종속성 버전을 정의 할 수 있도록하고 싶습니다. JAR 파일을 배포하는 한이 작업을 수행 할 수있었습니다. 그러나 JAR은 완전히 비어 있으며 불필요합니다. 내 목표는 POM 파일을 생성하고 배포하는 것입니다.이 패키지가 "pom"패키지 인 Maven 프로젝트 인 경우 할 수있을 것입니다.

게시 할 아티팩트 목록에서 JAR을 수동으로 제외하면 POM 파일조차도 설치되지 않습니다. 위가 제대로 생산하고 내 로컬 메이븐의 repo에 다음 POM 파일을 설치

group 'test' 
version '1.0.0-SNAPSHOT' 

buildscript { 
    repositories { 
    mavenCentral() 

    } 
    dependencies { 
    classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.5.1.RELEASE' //Matches the Spring IO version 
    } 
} 

apply plugin: 'java' 
apply plugin: 'io.spring.dependency-management' 
apply plugin: 'maven' 

dependencyManagement { 
    dependencies { 
    dependency 'cglib:cglib-nodep:3.2.4' 
    dependency 'junit:junit:4.12' 
    } 
} 

////Uncommenting this causes nothing at all to be deployed: 
//jar.enabled = false 
//configurations.archives.artifacts.with { archives -> 
// archives.removeAll { it.type == 'jar' } 
//} 

:

문제 입증하는 테스트 빌드입니다 그러나

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>test</groupId> 
    <artifactId>gradle-pom-packaging-test</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <dependencyManagement> 
    <dependencies> 
     <dependency> 
     <groupId>cglib</groupId> 
     <artifactId>cglib-nodep</artifactId> 
     <version>3.2.4</version> 
     </dependency> 
     <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 
     </dependency> 
    </dependencies> 
    </dependencyManagement> 
</project> 

을, 또한 설치하는 MANIFEST.MF 파일에 대해 비어있는 JAR 파일을 저장하십시오.

maven-publish 플러그인을 사용하여 성공적으로이 작업을 수행 할 수있었습니다. 그러나 Gradle Sonatype Nexus plugin을 사용하여 이슈를 Nexus 인스턴스에 게시 할 수도 있습니다. 이 플러그인은 maven 플러그인을 기반으로하므로 maven-publish 플러그인은 내 필요에 맞지 않습니다. 생성하고 나는 경우 수행 할 수있을 것처럼 maven Gradle을 플러그인을 사용하여 바로 POM 파일을 배포 할 수있는 방법이 있나요

apply plugin: 'maven-publish' 
publishing { 
    publications { 
    maven(MavenPublication) { 
    } 
    } 
} 

: 다음은 내가이 maven-publish 플러그인 작업을 진행하게 추가하는 데 필요한 모든 것입니다 이 패키지는 "pom"패키지가있는 Maven 프로젝트였습니까? 당신은 BOM을에게 Gradle을 방법으로 만들 수있는 DSL이 그 플러그인을 고려해야한다

답변

1
+0

는 더 일반적으로,이 표준 받는다는 게시 플러그인에 대한 개선 (향상입니다 POM의 dependencyManagement 섹션을 생성하기 위해 Spring 종속성 관리 플러그인이 필요하고, 또한 gradle-pom-plugin이 수행하는 추가 옵션/제공 작업을 수행해야하므로 실제로 필요하지 않습니다. 나는 '추가 게시하여이 받는다는 게시 플러그인이 작동하도록했다 { 간행물 { 받는다는 (MavenPublication를) { } } 은}'나는 오프닝 질문에 언급하지 않았다 –

+0

한 가지 내가'이다 또한 [Gradle Sonatype Nexus plugin] (https://github.com/bmuschko/gradle-nexus-plugin)을 사용하여 이슈를 내 넥서스 저장소 (주로 repositoryUrl/snapshotRepositoryUrl 기능)에 게시 할 수 있습니다. 그것은'maven' 플러그인 기능을 사용하기 때문에'maven-publish' 또는'ru.vyarus.pom'을 사용하면 아티팩트를 구성하고 업로드하는 데 다른 메커니즘을 사용하기 때문에 잘 작동하지 않습니다. 그에 따라 내 질문을 업데이트하겠습니다. –