我有一个使用Google Calendar v3 API的Android项目。
我正在使用Google API Client和Calendar API Java个库在Google日历上执行查询。
我在设置maven依赖项时遇到问题。我已经使用文档中的ID将这些库添加到我的pom.xml中,但是其中一些已经过时了,所以我最终得到了这个pom.xml
我不得不将<scope>provided</scope>
放到google-api-client,google-http-client-jackson和google-http-client-android库中,因为maven在尝试dex这些lib时失败了。
Failed to execute goal com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.4.1:dex (default-dex)
现在这个pom.xml成功创建了.apk并将其安装在设备上。但是当我尝试使用提供的库对Calendar API进行查询时,应用程序失败,说它无法找到某些类。
12-19 17:32:17.247: E/dalvikvm(15119): Could not find class 'com.google.api.services.calendar.model.TimePeriod', referenced from method
当我从Eclipse构建应用程序时(所有.jars都在/ libs文件夹中)一切正常。
所以我想知道是否有正确的方法将这些依赖项添加到Maven脚本。 谷歌有很多过时的文档,包含非工作链接或样本。 否则,我必须自己删除Google库并编写Calendar API查询。
任何帮助都将受到高度赞赏。
解答:
xpp3.jar导致了这个问题,因为它有来自javax包的类。我不得不手动将其从所有Google库中排除:
<exclusion>
<artifactId>xpp3</artifactId>
<groupId>xpp3</groupId>
</exclusion>
答案 0 :(得分:1)
您不能使用提供的范围,因为这些库不是Android堆栈的一部分,因此需要包含在您的apk中。将默认范围包含在内时,您遇到的失败是什么?
更新:
怀疑您正在尝试包含javax命名空间项目。尝试找出导致它的依赖是什么
mvn dependency:tree
然后可能要么排除它(假设已经在android中使用相同的类)或将其遮蔽到不同的命名空间(并更新库以使用它)或找到更适合的库..
答案 1 :(得分:1)
阿尔乔姆,
我看到下一个错误并建议如何修复它:
[INFO] trouble processing "javax/xml/namespace/QName.class":
[INFO]
[INFO] Ill-advised or mistaken usage of a core class (java.* or javax.*)
[INFO] when not building a core library.
这是Java核心文件。尝试找出使用它的依赖项(mvn dependency:tree
)。