我有一个生成物料清单(BOM)的项目。当我执行 gradle build 命令时,它会生成一个空 jar 包,里面只包含一个 META-INF 文件夹。
但是我能够正确地将 pom(BOM)发布到 Nexus,并上传空 jar 包。
根据 maven 插件文档 https://docs.gradle.org/current/userguide/maven_plugin.html,我们应该能够设置打包方式:
下面是 Gradle 上传的 pom 示例:
用maven上传时,会出现以下额外内容:
但是我能够正确地将 pom(BOM)发布到 Nexus,并上传空 jar 包。
根据 maven 插件文档 https://docs.gradle.org/current/userguide/maven_plugin.html,我们应该能够设置打包方式:
那么,如何将打包方式设置为 pom?packaging archiveTask.extension
其中,uploadTask 和 archiveTask 分别指用于上传和生成归档文件的任务
下面是 Gradle 上传的 pom 示例:
<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>com.ttt.a</groupId>
<artifactId>my-bom</artifactId>
<version>Something-SNAPSHOT</version>
用maven上传时,会出现以下额外内容:
<packaging>pom</packaging>
更新:
完整的build.gradle配置:
buildscript {
repositories {
maven {
url "http://myrepo"
}
}
dependencies {
classpath "io.spring.gradle:dependency-management-plugin:1.0.4.RELEASE"
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.5"
classpath 'org.asciidoctor:asciidoctor-gradle-plugin:1.5.7'
} }
apply plugin: 'java' apply plugin: 'maven' apply plugin: "io.spring.dependency-management" apply plugin: "jacoco" apply plugin: 'org.asciidoctor.convert' apply plugin: 'org.sonarqube'
group = project.properties['groupId'] version = project.properties['version'].toString()
description = """Bill of Materials"""
sourceCompatibility = 1.8 targetCompatibility = 1.8
ext {
xxx = '1.0.0'
yyy = '1.2.0'
... }
repositories {
maven {
url "http://myrepo"
} }
dependencyManagement {
dependencies {
dependency "com.myorg:xxx:${xxx}"
dependency "com.myorg:yyy:${yyy}"
...
} }
uploadArchives {
repositories {
mavenDeployer {
snapshotRepository(url: 'http://myrepo') {
authentication(userName: "$System.env.NEXUS_USER", password: "$System.env.NEXUS_PASSWORD")
}
}
} }
asciidoctor {
sourceDir = file('src/docs/asciidoc/')
sources {
include '*.adoc'
}
outputDir = file("build/docs/${version}") }
task generateDummyBom {
doLast {
project.buildDir.mkdirs()
new File("$project.buildDir/dummy.pom").write("<project></project>\n")
}
ext.bomFile = file("$project.buildDir/dummy.pom") }
artifacts {
archives(generateDummyBom.bomFile) {
builtBy generateDummyBom
} }
jar.enabled = false
packaging
属性吗?例如,设置为pom
? - ToYonosbuild.gradle
文件部分呢? - ToYonos