Gradle 3.5执行artifactoryPublish成功但未上传JAR到Artifactory问题求助
问题原因及修复方案
你目前只成功上传了构建过程的元数据,没有上传JAR包,是因为缺少以下两处核心配置:
- 缺少生成JAR包的对应插件配置
你的配置里没有应用java插件,Gradle不会自动执行JAR构建逻辑,没有JAR产物自然无法上传。需要在build.gradle中添加对应插件配置:apply plugin: 'java' - 缺少Artifactory发布的构件指定配置
你使用的3.1.1版本Artifactory插件不会自动拾取项目生成的JAR构件,必须在artifactory.publish块中明确指定要上传的内容,需要补充defaults配置块,可选两种配置方式:
方式一:直接指定JAR任务产物,适合单JAR的简单场景
方式二:配合artifactory { contextUrl = "xxxxxxxxx" publish { repository { repoKey = 'repokey1' username = "xxxxxxx" password = "xxxxxx" } // 新增以下配置 defaults { // 直接指定上传jar任务的输出产物 artifacts jar } } // 原有resolve配置保持不变即可 }maven-publish插件定义发布内容,适合多构件、需要生成pom文件的场景
先应用maven-publish插件:
再定义发布内容,关联到Artifactory配置:apply plugin: 'maven-publish'publishing { publications { mavenJava(MavenPublication) { from components.java } } } artifactory { contextUrl = "xxxxxxxxx" publish { repository { repoKey = 'repokey1' username = "xxxxxxx" password = "xxxxxx" } defaults { // 引用上面定义的maven发布内容 publications 'mavenJava' } } }
配置修改完成后,建议执行完整的构建+发布命令,同时开启info日志确认上传细节:
gradle build artifactoryPublish -i
执行后如果日志中出现类似Deploying artifact: http://xxx/repokey1/xxx/xxx.jar的输出,就说明JAR已经成功上传,直接去你配置的repokey1仓库对应的路径下找JAR即可,不需要访问build元数据的接口地址。
内容的提问来源于stack exchange,提问作者Sage Harpuia
相关产品推荐
相关产品推荐

