【问题标题】:How to build and run okhttp 3.10.0如何构建和运行 okhttp 3.10.0
【发布时间】:2019-12-30 07:41:23
【问题描述】:

我从https://github.com/square/okhttp克隆代码

我想看3.10.0版本的源码。

但是无法编译成功。

gongzelong:okhttp gongzelong$ git branch
  master
* parent-3.10.0
gongzelong:okhttp gongzelong$ mvn clean verify
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[ERROR] 'build.plugins.plugin[org.apache.maven.plugins:maven-surefire-plugin].dependencies.dependency.version' for org.mortbay.jetty.alpn:alpn-boot:jar must be a valid version but is '${alpn.jdk8.version}'. @ com.squareup.okhttp3:parent:3.10.0, /Users/gongzelong/Android/okhttp/pom.xml, line 320, column 28
 @ 
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]   
[ERROR]   The project com.squareup.okhttp3:okhttp:3.10.0 (/Users/gongzelong/Android/okhttp/okhttp/pom.xml) has 1 error
[ERROR]     'build.plugins.plugin[org.apache.maven.plugins:maven-surefire-plugin].dependencies.dependency.version' for org.mortbay.jetty.alpn:alpn-boot:jar must be a valid version but is '${alpn.jdk8.version}'. @ com.squareup.okhttp3:parent:3.10.0, /Users/gongzelong/Android/okhttp/pom.xml, line 320, column 28
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException

添加我的答案中的代码后,它可以运行'mvn clean verify'

但 IDEA 显示如下错误:

【问题讨论】:

  • 希望对您有所帮助:stackoverflow.com/a/55790149/9908240
  • @ViralPatel 谢谢,在本地添加 jar 之前,我希望找出它找不到 jar 的原因。 mvnrepository.com/artifact/org.mortbay.jetty.alpn/alpn-boot,它有 7.1.2.v20141202 alpn。但 IDEA 显示错误。
  • 请提供日志或错误信息
  • @ViralPatel 关于 IDEA 错误,请检查屏幕截图。我的意思是错误显示在 IDEA 中。在我按照我在回答中所说的操作后,“mvn clean verify”现在可以正常工作了。
  • 如何在 Gradle 中实现 okhttp?

标签: java android maven okhttp


【解决方案1】:

您也可以将该库添加到演示项目中,在 android studio 中将其更改为 Project 文件夹。您可以在外部库中找到它。

或者你可以下载它,然后使用VsCode编辑器打开它并阅读。

【讨论】:

  • 是一个选项,但是为什么会出现问题,如何直接修复呢?
  • 你可以试试 isaaaaame 答案。但是OkHttp是一个纯库,如果你用android studio打开它,你必须使用导入模块或添加库的方法。
【解决方案2】:

对于 org.mortbay.jetty.alpn:alpn-boot:jar 必须是有效版本,但为 '${alpn.jdk8.version}'

在他们的 build.gradle 中有

def alpnBootVersion() {
def version = System.getProperty('alpn.boot.version')

if (version != null) {
  return version
}

他们可能在本地 gradle.properties 中添加了 alpn.jdk8.version 作为变量。将 def version = System.getProperty('alpn.boot.version') 更改为 def version = 8.1.13 ,这应该可以解决问题。

【讨论】:

  • 你提到的代码属于3.10.0版本? 3.10.0好像没有这样的代码
  • @FrancisBacon 检查他们的 build.gradle,它是 8 天前编辑的:github.com/square/okhttp/blob/master/build.gradle
  • 你的意思是尝试构建okhttp的最新源代码。但是如何构建3.10.0的源代码呢?
  • 正如@Lenoarod 所说:“OkHttp 是一个纯库,如果你使用android studio 打开它,你必须使用导入模块或添加库方法。”。它不应该作为一个独立的项目来构建。
  • 我是通过IDEA打开的,所以我应该使用maven编译项目。并且 CONTRIBUTE.MD 说,它可以成功运行 'mvn clean verify'。
【解决方案3】:

这是由于我的 java 版本缺少 alpn 版本

gongzelong:okhttp gongzelong$ java -version java版本“1.8.0_172” Java(TM) SE 运行时环境 (build 1.8.0_172-b11) Java HotSpot(TM) 64 位服务器 VM(内部版本 25.172-b11,混合模式)

所以在我在文件中添加以下代码之后 /Users/gongzelong/Android/okhttp/pom.xml

gongzelong:okhttp gongzelong$ git diff
diff --git a/pom.xml b/pom.xml
index 8b87c2038..274159c3e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -620,5 +620,14 @@
         <alpn.jdk8.version>8.1.12.v20180117</alpn.jdk8.version>
       </properties>
     </profile>
+    <profile>
+      <id>alpn-when-jdk8_172</id>
+      <activation>
+        <jdk>1.8.0_172</jdk>
+      </activation>
+      <properties>
+        <alpn.jdk8.version>8.1.12.v20180117</alpn.jdk8.version>
+      </properties>
+    </profile>
   </profiles>
 </project>

它可以运行“mvn clean verify”和“mvn clean install”。

【讨论】:

    猜你喜欢
    • 2018-07-10
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 2019-09-18
    • 2014-07-14
    • 1970-01-01
    相关资源
    最近更新 更多