2017-04-12 58 views
2

我有一個Gradle項目,它使用Spring's dependency management plugin來定義依賴版本的列表。我也使用Maven plugin將項目部署到Maven存儲庫。我可以使用Gradle maven插件創建Maven POM-only(BOM)構建以部署到Nexus嗎?

我希望能夠將此部署爲Maven物料清單(BOM),以便我可以在其他Gradle項目中使用它來定義我的依賴版本。只要我還部署了一個JAR文件,我就能夠實現這個目標。但是,JAR完全是空的和多餘的。我的目標是生成和部署POM文件,就像我能夠做到的,如果這是一個帶有「pom」包裝的Maven項目。

如果我從要發佈的工件列表中手動排除JAR,則不會安裝任何內容,甚至不會安裝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' } 
//} 

以上正常生產和下面的POM文件安裝到我的本地Maven回購:

<?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> 

然而,還安裝了一個JAR文件保存爲MANIFEST.MF文件。

我能夠成功地使用maven-publish插件工作。但是,我也在使用Gradle Sonatype Nexus plugin將工件發佈到Nexus實例。由於此插件基於maven插件,因此maven-publish插件將無法滿足我的需求。以下是我所需要的加入讓它與maven-publish插件工作:

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

有沒有一種方法來生成和使用maven搖籃插件,像我就可以做,如果部署只是POM文件這是一個帶有「pom」包裝的Maven項目?

回答

1

你應該考慮的是插件,它有一個DSL創建物料清單的gradle這個辦法:

https://github.com/xvik/gradle-pom-plugin

朱利安

+0

更一般地,這是一個增強標準的maven-發佈的插件(增強我並不需要它,因爲我需要Spring依賴管理插件來生成POM的dependencyManagement部分,並且這也是gradle-pom-plugin提供的其他可選/提供的東西)。我沒有加入'出版得到這個與Maven的發佈插件的工作{ 出版物{ 行家(MavenPublication){} } } ' –

+0

有一件事,我並沒有在開場問題提的是,我m也使用[Gradle Sonatype Nexus插件](https://github.com/bmuschko/gradle-nexus-plugin)將工件發佈到我的nexus存儲庫(主要用於repositoryUrl/snapshotRepositoryUrl功能)。這使用'maven'插件的功能,所以使用'maven-publish'或'ru.vyarus.pom'將無法正常工作,因爲它使用不同的機制來配置和上傳工件。我會相應地更新我的問題。 –

相關問題