我有一个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项目?
更一般地,这是一个增强标准的maven-发布的插件(增强我并不需要它,因为我需要Spring依赖管理插件来生成POM的dependencyManagement部分,并且这也是gradle-pom-plugin提供的其他可选/提供的东西)。我没有加入'出版得到这个与Maven的发布插件的工作{ 出版物{ 行家(MavenPublication){} } } ' –
有一件事,我并没有在开场问题提的是,我m也使用[Gradle Sonatype Nexus插件](https://github.com/bmuschko/gradle-nexus-plugin)将工件发布到我的nexus存储库(主要用于repositoryUrl/snapshotRepositoryUrl功能)。这使用'maven'插件的功能,所以使用'maven-publish'或'ru.vyarus.pom'将无法正常工作,因为它使用不同的机制来配置和上传工件。我会相应地更新我的问题。 –