我有一个 Gradle 项目,它使用Spring 的依赖管理插件来定义依赖版本列表。我还使用Maven 插件将项目部署到 Maven 存储库。
我希望能够将其部署为 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 插件将工件发布到 Nexus 实例。由于它建立在maven
插件之上,因此该maven-publish
插件无法满足我的需求。以下是我需要添加的所有内容以使其与maven-publish
插件一起使用:
apply plugin: 'maven-publish'
publishing {
publications {
maven(MavenPublication) {
}
}
}
有没有办法只使用maven
Gradle 插件生成和部署 POM 文件,就像我可以做的那样,如果这是一个带有“pom”包装的 Maven 项目?