将Google API Java客户端库和Calendar API Java库添加到Maven依赖项

时间:2012-12-19 16:53:28

标签: android maven google-api google-calendar-api

我有一个使用Google Calendar v3 API的Android项目。

我正在使用Google API ClientCalendar 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>

2 个答案:

答案 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)。