如何通过Gradle上传到Artifactory时更改jar文件名

3

我正在使用Gradle将jar上传到Artifactory。我已经成功上传了,但是我尝试更改jar文件名,但它并没有真正让我这样做。

我正在使用shadowJar进行打包。以下是我的操作:

apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'idea'
apply plugin: 'maven-publish'
apply plugin: 'com.github.johnrengelman.shadow'



    shadowJar {
        classifier = ''
        baseName = 'com.mycompany.app-all'
        manifest {
            attributes 'Main-Class': 'com.mycompany.app.main.starter'
        }
    }


publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.shadow

            groupId 'com.mycompany'
            artifactId "app"
            version "${build_version}"
        }
    }
}

如果build_version=2.1,那么artifactory上的目录将如下所示:http://repo.address:8081/artifactory/libs-release-local/com/mycompany/app/2.1/app-2.1.jar。我想保留文件夹结构,但更改jar文件名(如在shadowJar中定义),以便它看起来像这样:http://repo.address:8081/artifactory/libs-release-local/com/mycompany/app/2.1/com.mycompany.app-all.jar。有什么建议吗?
2个回答

1

Jar任务的默认命名约定是:

[baseName]-[appendix]-[version]-[classifier].[extension]

如果您只设置了基本名称,则其余值将附加到它。要覆盖,请设置archiveName而不是baseName
shadowJar {
    ...
    archiveName = 'com.mycompany.app-all'
    ...
}

更改Artifactory发布的命名方式:
publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.shadow

            groupId 'com.mycompany'
            artifactId 'com.mycompany.app-all' //<-- changed here
            version ''                         // and here
        }
    }
}

它没有起作用。我仍然在Artifactory中有以下文件:http://repo.address:8081/artifactory/libs-release-local/com/mycompany/app/2.3/app-2.3.jar - rayman
archiveName按预期更改文件名 - 但仅在本地更改!一旦发布,它将更改为我下面指定的格式:正在上传:com/mycompany/app/2.4/app-2.4.jar到远程存储库。 - rayman
当我在Artifactory上检查jar时,我注意到它排除了我的web/resources模块下的所有内容。有什么想法可以重构代码并将其包含进去吗? - rayman
1
@rage 你搞定了吗?能分享一个可用的版本吗? - ali haider
我也在寻找类似的解决方案 - 更改我的tar文件名称,以便符合传统的Teamcity部署作业的要求。有人有解决方案吗? - saurabh.in
这个问题涉及到shadow jar插件,而且已经存在好几年了。请发布一个新的问题,并提供更多关于你情况的细节。 - RaGe

0
如上所述,要修改发布到 Artifactory 的 jar 名称,只需将以下内容添加到发布中即可。
artifactId = 'ChangedJarName' 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接