8

我正在为一个项目使用谷歌日历 Java API。

日历部分很好,maven似乎下载并使用它没有任何麻烦。

我的问题来自这个库的主要依赖:com.google.api.client api。

特别是,当我按照此页面上的详细说明进行操作时,maven 无法正确编译我的项目:

package com.google.api.client.extensions.java6.auth.oauth2 does not exist
package com.google.api.client.extensions.jetty.auth.oauth2 does not exist
package com.google.api.client.json.jackson2 does not exist

它缺少几个类,因此无法编译文件,而当我下载 zip 并在不使用 maven 的情况下手动添加 .jar 时,它可以正常工作。

这是我用 maven 管理的第一个项目,不知道如何从那里开始。指针将不胜感激。

编辑帖子请求 --- 这是我的 POM

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>fr.univnantes.atal.atcal</groupId>
  <artifactId>AtCal</artifactId>
  <version>0.1</version>
  <packaging>jar</packaging>

  <name>AtCal</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <repositories>
    <repository>
      <id>google-api-services</id>
      <url>http://google-api-client-libraries.appspot.com/mavenrepo</url>
    </repository>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.api-client</groupId>
      <artifactId>google-api-client</artifactId>
      <version>1.12.0-beta</version>
    </dependency>
    <dependency>
      <groupId>com.google.apis</groupId>
      <artifactId>google-api-services-calendar</artifactId>
      <version>v3-rev20-1.12.0-beta</version>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <!-- best lock down version of the plugin too -->
      <configuration>
        <source>1.5</source>
        <target>1.5</target>
      </configuration>
    </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

我基本上添加了两个依赖项:日历和api客户端。这是让事情在文档上工作的提到的步骤。

4

3 回答 3

14

看起来似乎非常beta-ishgoogle-api-services-calendar:v3-rev20-1.12.0-beta还没有推送到 Sontaype 存储库,但是如果您尝试在 POM 中同时包含推荐的存储库和日历 API 下提到的存储库:

<repositories>
    <repository>
        <id>google-api-services</id>
        <url>https://oss.sonatype.org/content/repositories/releases/</url>
    </repository>
    <repository>
        <id>google-api-services-beta</id>
        <url>http://google-api-client-libraries.appspot.com/mavenrepo</url>
    </repository>
</repositories>

此外,似乎还需要以下附加依赖项:

<dependency>
    <groupId>com.google.api-client</groupId>
    <artifactId>google-api-client-java6</artifactId>
    <version>1.12.0-beta</version>
</dependency>
<dependency>
    <groupId>com.google.oauth-client</groupId>
    <artifactId>google-oauth-client-jetty</artifactId>
    <version>1.12.0-beta</version>
</dependency>
<dependency>
    <groupId>com.google.http-client</groupId>
    <artifactId>google-http-client-jackson2</artifactId>
    <version>1.12.0-beta</version>
</dependency>

希望有帮助。

于 2012-12-01T20:01:41.750 回答
2

我对谷歌自定义搜索 api 进行了冒险。大多数问题是由于 mvn repo http://google-api-client-libraries.appspot.com/mavenrepo不可用。

我从以下位置获取的自定义搜索 jar:

<repository>
  <id>google-api-services</id>
  <url>http://mavenrepo.google-api-java-client.googlecode.com/hg</url>
</repository>

它在手动下载的 jar 内的 pom 中。最新的 google-api-clientgoogle-http-client-jackson(在 1.13.2-beta JacksonFactory 是一个附加依赖项)位于中央 maven 存储库中。

于 2013-02-05T07:57:32.660 回答
0

几个月前,Google 开始将库推送到 Sonatype 存储库。您不再应该在 pom.xml 中包含指向google-api-client-libraries.appspot.com/mavenrepomavenrepo.google-api-java-client.googlecode.com

这样做会减慢您的构建速度,因为您最终会检查该存储库中的所有依赖项(甚至是非 Google 依赖项)。这些检查 404,然后您检查主存储库。

于 2013-08-21T15:31:06.380 回答