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이 그 플러그인을 고려해야한다
는 더 일반적으로,이 표준 받는다는 게시 플러그인에 대한 개선 (향상입니다 POM의 dependencyManagement 섹션을 생성하기 위해 Spring 종속성 관리 플러그인이 필요하고, 또한 gradle-pom-plugin이 수행하는 추가 옵션/제공 작업을 수행해야하므로 실제로 필요하지 않습니다. 나는 '추가 게시하여이 받는다는 게시 플러그인이 작동하도록했다 { 간행물 { 받는다는 (MavenPublication를) { } } 은}'나는 오프닝 질문에 언급하지 않았다 –
한 가지 내가'이다 또한 [Gradle Sonatype Nexus plugin] (https://github.com/bmuschko/gradle-nexus-plugin)을 사용하여 이슈를 내 넥서스 저장소 (주로 repositoryUrl/snapshotRepositoryUrl 기능)에 게시 할 수 있습니다. 그것은'maven' 플러그인 기능을 사용하기 때문에'maven-publish' 또는'ru.vyarus.pom'을 사용하면 아티팩트를 구성하고 업로드하는 데 다른 메커니즘을 사용하기 때문에 잘 작동하지 않습니다. 그에 따라 내 질문을 업데이트하겠습니다. –