我希望在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名称和版本号,如何才能做到呢?
8条答案
按热度按时间yzxexxkh1#
jar
配置中的archiveName 'abc.jar'
强制名称为“abc.jar”。jar名称的默认格式为${baseName}-${appendix}-${version}-${classifier}.${extension}
,其中baseName
是项目的名称,version
是项目的版本。如果您删除配置中的archiveName行,您将获得所需的格式。如果您希望归档文件的名称与项目名称不同,请改为设置baseName
,例如:有关https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Jar.html#org.gradle.api.tasks.bundling.Jar:archiveName配置
jar
任务的详细信息,请访问www.example.com。zf2sa74q2#
build.gradle
常规DSLbuild.gradle.kts
KotlinDSLf1tvaqid3#
我想在KotlinDSL中实现这一点,这是Google上出现的第一个问题,涉及Kotlin DSL的答案不起作用,但我设法找到了解决方案。
在
build.gradle.kts
文件中创建以下内容:假定项目名称为
project
,项目版本为1.0
。要更改jar文件的基本名称:
要更改整个jar文件名,请编写以下代码:
使用
${project.name}
和${project.version}
分别插入项目名称和版本,例如:w41d8nur4#
阅读gradle的文档,baseName和archiveName已弃用,您应在项目级别使用archivesBaseName,如下所示:
对我的项目效果很好,希望对你的项目有帮助。
dphi5xsq5#
对于Gradle 6.x
将版本设置为空。
更多关于他们的DOC!
lmvvr0a86#
(在Gradle 7.6上亲自测试并验证了版本5的文档)
在更新版本的Gradle中,如果您在模块
build.gradle
文件中指定version
属性(通常出现在plugin
块之后和任何其他块之前),则OP描述的结果将由默认构建脚本自动实现。它看起来像这样:
version
接受任何字符串,因此如果需要,您也可以附加预发布的字符串,如1.0.0-beta
。不过,还有一点需要注意,默认情况下Gradle使用模块名称作为存档和jar文件的基本名称。如果您的模块名称与库名称匹配,这应该不是问题,但常见的情况是使用子模块,其中您通常具有
lib
或core
模块,在这种情况下,你的jar文件最终会被命名为lib-1.0.0.jar
,为了避免这种情况,你可以指定archivesBaseName
属性,你可以把它放在version
的正下方(或正上方):这将正确生成
abc-1.0.0.jar
文件。请注意,
archivesBaseName
使用 * 复数形式*archives
,它来自Project类型,而不是来自jar
任务的 * 单数形式*archive
。但是,如果您需要比上面描述的粒度更细的粒度,则确实需要使用
jar
任务,这与OP最初的意图类似。n53p2ov07#
如果您希望使用单个设置重命名JAR、源JAR和javadoc JAR,同时仍然包括分类器和版本,请在顶层设置
archiveBaseName
。knsnq2tg8#
对我来说我只是在上面加上