使用 Gradle 发布时显式定义工件名称

问题描述 投票:0回答:1

我正在尝试发布到本地存储库,但要显式设置工件名称。 例如,假设组织是“quick.fox”,模块是“core”,版本是 1.1。

我得到的是:

<repo>/quick.fox/core/1.1/core-1.1.jar

我想要的:

<repo>/quick.fox/core/1.1/prefix-core.jar

基本示例代码是:

apply plugin: 'maven-publish'

publishing {
  publications {
    maven(MavenPublication) {
      group = "quick.fox"
      artifactId = "core"
      version = "1.1"
    }
  }
}

我该怎么做?我正在使用 Gradle 6.5.1,并且我愿意使用 maven 或 ivy 发布插件。

maven gradle ivy
1个回答
0
投票

要获取工件名称格式(

prefix-core.jar
而不是
core-1.1.jar
),您需要在
发布配置
中自定义
artifactId
version,并使用
artifact
块指定工件文件。

我假设您有一个要发布的 jar 任务或预构建的 jar。如果您在构建过程中生成 jar,请确保其名称与您指定的名称相匹配。

查看 Gradle 6.5.1 MavenPublication,您需要使用

groupId
,而不是
group

apply plugin: 'maven-publish'

publishing {
  publications {
    maven(MavenPublication) {
      groupId = "quick.fox"
      artifactId = "core"
      version = "1.1"

      // Assuming 'jar' task exists and outputs the desired JAR file name
      artifact(tasks.jar) {
        // Explicitly setting the artifact file name
        builtBy tasks.jar
        extension 'jar'
        classifier null
        name "prefix-core"
      }
    }
  }
}

// Make sure your jar task produces a JAR with the name 'prefix-core.jar'
tasks.jar {
    archiveBaseName.set("prefix-core")
    version = null  // Avoid appending version to the jar file name
}

archiveBaseName
任务的
jar
设置为
prefix-core
,并且将
version
置空以防止将其附加到文件名中。这意味着生成的 jar 文件与出版物中
artifact
块中指定的名称相匹配。

但是,这再次假设您正在使用生成工件的

jar
任务。如果您正在使用预构建的 jar 或其他类型的工件,您可能需要调整
artifact
块以指向正确的文件。

© www.soinside.com 2019 - 2024. All rights reserved.