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

68de4m5k  于 2022-12-27  发布在  其他
关注(0)|答案(8)|浏览(1112)

我希望在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'
}

所以当我这么做的时候

gradle清洁构建版本,我预期生成的jar名称为abc-1.00.00.jar

但这并没有发生,输出的jar名称只显示为abc.jar,而忽略了版本号。我想同时指定jar名称和版本号,如何才能做到呢?

yzxexxkh

yzxexxkh1#

jar配置中的archiveName 'abc.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'
}

有关https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Jar.html#org.gradle.api.tasks.bundling.Jar:archiveName配置jar任务的详细信息,请访问www.example.com。

zf2sa74q

zf2sa74q2#

    • 5年级+**

build.gradle常规DSL

archiveBaseName = 'foo'

build.gradle.ktsKotlinDSL

archivesBaseName.set("foo") // Notice the double quotes
f1tvaqid

f1tvaqid3#

我想在KotlinDSL中实现这一点,这是Google上出现的第一个问题,涉及Kotlin DSL的答案不起作用,但我设法找到了解决方案。
build.gradle.kts文件中创建以下内容:

tasks.jar {
  manifest {
    [THE LINES BELOW WILL BE INSERTED HERE]
  }
}

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

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

archiveBaseName.set("name") // .jar name: name-1.0.jar

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

archiveFileName.set("name.jar") // .jar name: name.jar

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

archiveFileName.set("${project.name}-${project.version}.jar") // .jar name: project-1.0.jar
w41d8nur

w41d8nur4#

阅读gradle的文档,baseName和archiveName已弃用,您应在项目级别使用archivesBaseName,如下所示:

project(":web") {
    description = "web"
    archivesBaseName = "your-project-name-" + getVersionCode()

    jar {
        // Will include every single one of your dependencies, project or not
        from {
            configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
        }
    }
}

对我的项目效果很好,希望对你的项目有帮助。

dphi5xsq

dphi5xsq5#

对于Gradle 6.x
将版本设置为空。

  • 版本=“”
  • 项目.archivesBaseName -这是方法。

更多关于他们的DOC!

lmvvr0a8

lmvvr0a86#

    • 适用于5.x、6.x和7.x级别**

(在Gradle 7.6上亲自测试并验证了版本5的文档)
在更新版本的Gradle中,如果您在模块build.gradle文件中指定version属性(通常出现在plugin块之后和任何其他块之前),则OP描述的结果将由默认构建脚本自动实现。
它看起来像这样:

plugins {
    // your plugins...
}

// This is the string you want to have.
version = '1.0.0'

dependencies {
    // your dependencies
}

version接受任何字符串,因此如果需要,您也可以附加预发布的字符串,如1.0.0-beta
不过,还有一点需要注意,默认情况下Gradle使用模块名称作为存档和jar文件的基本名称。如果您的模块名称与库名称匹配,这应该不是问题,但常见的情况是使用子模块,其中您通常具有libcore模块,在这种情况下,你的jar文件最终会被命名为lib-1.0.0.jar,为了避免这种情况,你可以指定archivesBaseName属性,你可以把它放在version的正下方(或正上方):

version = '1.0.0'
archivesBaseName = 'abc'

这将正确生成abc-1.0.0.jar文件。
请注意,archivesBaseName使用 * 复数形式*archives,它来自Project类型,而不是来自jar任务的 * 单数形式*archive
但是,如果您需要比上面描述的粒度更细的粒度,则确实需要使用jar任务,这与OP最初的意图类似。

n53p2ov0

n53p2ov07#

如果您希望使用单个设置重命名JAR、源JAR和javadoc JAR,同时仍然包括分类器和版本,请在顶层设置archiveBaseName

knsnq2tg

knsnq2tg8#

<pre><code>
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'application'

jar {
    archivesBaseName = archivesBaseName + '-' + version
}

</pre></code>

对我来说我只是在上面加上

相关问题