gradle - java.lang.NoSuchFieldError: gradle artifactoryPublish 任务期间的 INSTANCE 错误
问题描述
我们正在尝试将配置了 gradle 4.0 的项目迁移到 gradle 5.6(最新)。看起来 httpclient (apache) 组件存在依赖性问题,在发布 war 包期间会生成此异常。
这是一个 gradle 项目,根(容器)项目包含一个用于打包的 war 插件,用于发布的 jfrog artifactory 4.9.8,所有子项目都是 java 项目,并提供了它们的依赖项列表(包括 httpclient 4.5.9 和 httpcore 4.4.11) .
-- root
plugins {
id 'war'
id 'maven-publish'
id 'org.sonarqube' version '2.7'
id 'net.researchgate.release' version '2.6.0'
id 'com.github.spotbugs' version '2.0.0' apply false
id 'com.jfrog.artifactory' version '4.9.8'
}
-- subprojects
dependencies {
..
compile 'org.apache.httpcomponents:httpclient:4.5.9'
..
configurations.all {
force 'org.apache.httpcomponents:httpcore:4.4.11'
force 'org.apache.httpcomponents:httpclient:4.5.9'
}
}
./gradlew artifactoryPublish
- 出了什么问题:任务“:artifactoryDeploy”执行失败。
实例
Caused by: java.lang.NoSuchFieldError: INSTANCE
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.getDefaultRegistry(PoolingHttpClientConnectionManager.java:109)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:116)
at org.jfrog.build.client.PreemptiveHttpClient.<init>(PreemptiveHttpClient.java:57)
at org.jfrog.build.client.ArtifactoryHttpClient.getHttpClient(ArtifactoryHttpClient.java:145)
at org.jfrog.build.client.ArtifactoryHttpClient.getHttpClient(ArtifactoryHttpClient.java:140)
at org.jfrog.build.client.ArtifactoryHttpClient.executeGetRequest(ArtifactoryHttpClient.java:184)
at org.jfrog.build.client.ArtifactoryHttpClient.getVersion(ArtifactoryHttpClient.java:154)
at org.jfrog.build.extractor.clientConfiguration.client.ArtifactoryBaseClient.getArtifactoryVersion(ArtifactoryBaseClient.java:109)
at org.jfrog.build.extractor.clientConfiguration.client.ArtifactoryBuildInfoClient.tryChecksumDeploy(ArtifactoryBuildInfoClient.java:705)
at org.jfrog.build.extractor.clientConfiguration.client.ArtifactoryBuildInfoClient.uploadFile(ArtifactoryBuildInfoClient.java:664)
at org.jfrog.build.extractor.clientConfiguration.client.ArtifactoryBuildInfoClient.doDeployArtifact(ArtifactoryBuildInfoClient.java:367)
at org.jfrog.build.extractor.clientConfiguration.client.ArtifactoryBuildInfoClient.deployArtifact(ArtifactoryBuildInfoClient.java:355)
at org.jfrog.build.extractor.clientConfiguration.client.ArtifactoryBuildInfoClient.deployArtifact(ArtifactoryBuildInfoClient.java:340)
at org.jfrog.gradle.plugin.artifactory.task.DeployTask.deployArtifacts(DeployTask.java:262)
at org.jfrog.gradle.plugin.artifactory.task.DeployTask.prepareAndDeploy(DeployTask.java:113)
at org.jfrog.gradle.plugin.artifactory.task.DeployTask.collectProjectBuildInfo(DeployTask.java:50)
at org.jfrog.gradle.plugin.artifactory.task.DeployTask.taskAction(DeployTask.java:44)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:49)
解决方案
推荐阅读
- twilio - Twilio 可编程视频 - 无需用户输入房间 ID 和名称即可开始视频通话
- git - 保留最后 X 次提交和历史记录
- python - 如何使用 random.random() 生成 30 到 35 之间的伪随机实数?
- javascript - 从服务器到客户端的 Json 数据传输
- snowflake-cloud-data-platform - 根据微分区获取选择数据
- pandas - 合并和排序包含不同排列的相同内容和不同关联值的两个熊猫数据框
- mysql - MySQL MHA binlog 设置检查失败
- android - Android Room 版本代码的用途是什么
- python - 在heroku上使用ffmpeg的内存限制错误
- python - 使用 psycopg2 将 io.StringIO / io.BytesIO 作为 Bytea 上传到 postgres