如何使用Gradle发布不同Group的多份构件?
解决方案
你没法在同一个MavenPublication里推送不同groupId的构件——每个发布配置对应唯一的Maven坐标(groupId/artifactId/version),而Nexus里的路径正是由groupId决定的。要实现需求,你需要创建两个独立的发布配置,分别对应tar包和jar包的坐标。
修改后的完整build.gradle代码如下:
plugins { id 'maven-publish' } group = "com.sample.location.abc" version = "1.1" def artifact_tar = 'myTarBall' def artifact_jar = 'myJarFile' publishing { publications { // 配置tar包发布,对应com.sample.location.abc路径 tarPublication(MavenPublication) { groupId = "${project.group}" artifactId = "${artifact_tar}" version = "${version}" artifact source: "${artifact_tar}-${version}.tar.gz", extension: "tar.gz" } // 配置jar包发布,对应com.sample.location.xyz路径 jarPublication(MavenPublication) { groupId = "com.sample.location.xyz" artifactId = "${artifact_jar}" version = "${version}" artifact source: "${artifact_jar}-${version}.jar", extension: "jar" } } // 配置Nexus仓库信息(如果之前未添加) repositories { maven { url = "你的Nexus仓库地址,例如http://your-nexus-host/repository/maven-releases/" credentials { username = "Nexus用户名" password = "Nexus密码" } } } }
使用说明
- 执行
./gradlew publish会同时推送两个构件到Nexus对应路径 - 也可以单独推送某一个构件:
- 推送tar包:
./gradlew publishTarPublicationToMavenRepository - 推送jar包:
./gradlew publishJarPublicationToMavenRepository
- 推送tar包:
内容的提问来源于stack exchange,提问作者John Viernes IV
相关产品推荐
相关产品推荐

