无法编译 ThreeTenABP

Unable to compile ThreeTenABP

提问人:IgorGanapolsky 提问时间:7/14/2015 最后编辑:TunakiIgorGanapolsky 更新时间:10/6/2015 访问量:883

问:

我正在尝试将 Jake Wharton 的 ThreeTenABP 库 - https://github.com/JakeWharton/ThreeTenABP - 用于我的 Android 项目中的 JSR310 日期/时间功能。该库的主要优点是它的编译开销比 Jodatime (http://www.joda.org/joda-time/) 和 threetenbp (https://github.com/ThreeTen/threetenbp) 少。但是,ThreeTenABP库没有在我的项目中编译。我将以下内容放在我的build.gradle中:

compile 'org.threeten:threetenbp:1.3-SNAPSHOT'
compile 'com.jakewharton.threetenabp:threetenabp:1.0.0-SNAPSHOT'

我收到编译错误:

错误:找不到 org.threeten:threetenbp:1.3-SNAPSHOT。 要求者: MyApp:应用:未指定 MyApp:app:未指定 > com.jakewharton.threetenabp:threetenabp:1.0.0-SNAPSHOT 在 build.gradle 文件中搜索

以前有人在 Android 中成功使用过这个库吗?

Android gradle sonatype threetenbp

评论

1赞 Meno Hochschild 7/15/2015
关于在 Android 上引入 JSR-310-features 的一点说明:ThreetenBP 与 Java-8 中的 ThreetenBP 并不完全相同。例如,与 Java-8 相比,回历基于完全不同的算法/数据。此外,一般的 i18n 支持较弱。java.time

答:

2赞 Robert Estivill 7/14/2015 #1

这是构建过程的问题,无法下载依赖项。

这很可能是由于您尚未将快照存储库添加到项目中,正如存储库中的自述文件所述

您应该能够通过将以下内容添加到顶级文件来解决此问题build.gradle

buildscript {
  repositories {
    mavenCentral()
    maven {
      url "https://oss.sonatype.org/content/repositories/snapshots"
    }
  }
  dependencies {
  }
}

编辑:

评论是对的,这不是存储库本身的问题。 问题是org.threeten:threetenbp:1.3-SNAPSHOT在这两个存储库中都不存在。( bintray快照 )

编辑#2:

请在项目上查看此问题

JakeWharton 在 11 小时前进行了评论 您需要 1.3-SNAPSHOT 的 ThreeTenBP 项目的 notzdb 分支。

编辑#3:

实际上,我刚刚看到你是造成问题的人:) 您将需要自己构建它,因为它不托管在任何存储库上:

$ git clone https://github.com/ThreeTen/threetenbp
$ cd ThreeTen/
$ git checkout no-tzdb
$ mvn clean install

另外,值得一提的是,ThreeTen 有两个独立的项目,是分支机构所在的最后一个活动项目

https://github.com/ThreeTen/threeten

https://github.com/ThreeTen/threetenbp

评论

0赞 IgorGanapolsky 7/14/2015
不对!我把maven{ url 'https://oss.sonatype.org/content/repositories/snapshots/' }
0赞 IgorGanapolsky 7/14/2015
按照您的步骤操作后,我看到:将 E:\git\threetenbp\target\threetenbp-1.3-SNAPSHOT-no-tzdb.jar 安装到 C:\Users\Igor\.m2\repository\org\threeten\threetenbp\1.3-SNAPSHOT\threetenbp-1.3-SNAPSHOT-no-tzdb.jar/。那么,我现在该怎么做才能托管对Sonatype的这种依赖呢?
0赞 Robert Estivill 7/15/2015
好吧,这不是由你决定的,而是由开发库的团队决定的。只要您在本地存储库中具有依赖项,您就可以在项目中使用它。如果您有兴趣将库发布到 Sonatype(或想要重命名和打包 ThreeTen),那么您可以阅读 intohand.com/blog/post/...
1赞 Robert Estivill 7/15/2015
一个库依赖于另一个库的非托管开发版本这一事实仅与该库开发人员相关。如果你不愿意做同样的事情,那就不要使用它。您的选择是:等待 1.3 最终发布并发布,fatjar 您的 lib,将两者(310、310abp 和所有依赖项)作为 jar 包含在 /libs 中,或者许多其他方法来解决这个问题。
1赞 Robert Estivill 7/16/2015
看这里: twitter.com/JakeWharton/status/621400826523840512 310 1.3 刚刚发布,随之而来的是 310ABP。因此,无需再担心托管依赖项,因为它现在位于 Maven search.maven.org/#search%7Cga%7C1%7Ca%3A%22threetenbp%22