想要在build.gradle中指定jar名称和版本

amu*_*ser 21 java gradle

我想在build.gradle中指定jar名称和版本,所以我的build.gradle如下所示.

apply plugin: 'java'

version = "1.00.00"

 dependencies { 
     compile files('../../lib/abc.jar') 
} 

jar{
    manifest{
        attributes ("Fw-Version" : "2.50.00", "${parent.manifestSectionName}")

    }
    archiveName 'abc.jar'
}
Run Code Online (Sandbox Code Playgroud)

所以,当我这样做

gradle clean build,我所期待的是生成的jar名称是abc-1.00.00.jar

但它没有发生,输出jar名称仅作为abc.jar,它只是忽略了版本.我想指定jar名称和版本,那么我该如何实现呢?

and*_*y88 31

archiveName 'abc.jar'在您的jar配置中强制名称为'abc.jar'.jar名称的默认格式是${baseName}-${appendix}-${version}-${classifier}.${extension},baseName项目名称在哪里,是项目version的版本.如果删除配置中的archiveName行,您将拥有所需的格式.如果您希望存档的名称与项目名称设置不同baseName,例如

jar {
    manifest{
        attributes ("Fw-Version" : "2.50.00", "${parent.manifestSectionName}")
    }
    baseName 'abc'
}
Run Code Online (Sandbox Code Playgroud)

有关配置任务的详细信息,请参阅https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Jar.html#org.gradle.api.tasks.bundling.Jar:archiveNamejar.

  • 在5.2.1(当前版本)中,属性“ baseName” [不推荐使用](https://docs.gradle.org/5.2.1/dsl/org.gradle.api.tasks.bundling.Jar.html#org。 gradle.api.tasks.bundling.Jar:archiveName),而替换为[`archiveBaseName`](https://docs.gradle.org/5.2.1/dsl/org.gradle.api.tasks.bundling.Jar。 html#org.gradle.api.tasks.bundling.Jar:archiveBaseName)为只读。我们如何在下一版的Gradle中做到这一点? (3认同)
  • `存档文件名` (2认同)

Ahm*_*mal 21

对于Gradle 5+

build.gradle 时髦的DSL

archiveBaseName = 'foo'
Run Code Online (Sandbox Code Playgroud)

build.gradle.kts 科特林 DSL

archivesBaseName.set("foo") // Notice the double quotes
Run Code Online (Sandbox Code Playgroud)

  • 有一个拼写错误,应该是“archivesBaseName” (4认同)
  • @QuiltyKim参考官方文档,它是带有“s”的“archivesBaseName”。 (3认同)
  • `archivesBaseName`(带有 **s**)是 Java 插件中的属性,而不是 Jar 插件中的属性。但是,如果未设置“archiveBaseName”,Jar 插件默认为“archivesBaseName”中的值。 (3认同)

Tog*_*ith 8

我想在 Kotlin DSL 中实现这一目标,这是我在 Google 上遇到的第一个问题。涉及 Kotlin DSL 的答案不起作用,但我设法找到了解决方案。


在文件中创建这个build.gradle.kts

tasks.jar {
  manifest {
    [THE LINES BELOW WILL BE INSERTED HERE]
  }
}
Run Code Online (Sandbox Code Playgroud)

假设项目名称为project,项目版本为1.0

要更改 jar 文件的基本名称:

archiveBaseName.set("name") // .jar name: name-1.0.jar
Run Code Online (Sandbox Code Playgroud)

要更改整个 jar 文件名,请编写以下内容:

archiveFileName.set("name.jar") // .jar name: name.jar
Run Code Online (Sandbox Code Playgroud)

使用${project.name}${project.version}分别插入项目名称和版本,例如:

archiveFileName.set("${project.name}-${project.version}.jar") // .jar name: project-1.0.jar
Run Code Online (Sandbox Code Playgroud)