使用Nexus访问Maven中的Java BigQuery工具

时间:2012-08-12 13:47:30

标签: google-bigquery

我刚刚开始在Java中构建一个bigquery上传器。目标是下载完整的Twitter流并将其上传到每小时桶中,然后在Dremel中处理这些以进行主题检测和跟踪项目。这是Eclipse Juno中MacOSX上的所有Java,以及带有本地Nexus代理的Maven。

我被困在起跑门;查找并编译一个验证和上传CSV文件的简单Java示例。我发现最接近的是bigquery-appengine-sample,虽然我不明白为什么我需要一个bigquery项目的appengine。稍后会探讨。

问题是,该项目不会在maven中构建。 eclipse中没有显示错误标志,但eclipse错误标志通常不可靠。 pom在这个元素上显示红色标记:

  

        com.google.apis         谷歌的API服务-的BigQuery         $ {} bigquery.version       

Maven安装失败并带有

  

[错误]无法在项目bigquery-appengine-sample上执行目标:无法解析项目com.google.api.client的依赖项:bigquery-appengi   ne-sample:war:1.0.0-SNAPSHOT:无法解析以下工件:com.google.apis-samples:shared-sample-appengine:jar:1.3.2,com.google.api   s:google-api-services-bigquery:jar:v2-rev18-1.7.2-beta:未能找到com.google.apis-samples:shared-sample-appengine:jar:1.3.2 in ... SOF赢了不允许URL ...缓存在本地存储库中,直到nexus的更新间隔已经过去才会重新尝试解析    或强制更新 - > [帮助1]

Nexus代理定义为http://mavenrepo.google-api-java-client.googlecode.com/hg/http://google-gson.googlecode.com/svn/mavenrepo/(均设置为SNAPSHOT)。这些似乎都没有起作用。浏览存储和索引都是空的(只是一个原型目录)。但浏览远程似乎工作AFAICT;显示一个看似完整的maven存储库树。

所以我的问题是:如何使用maven在Java中构建bigquery示例?

3 个答案:

答案 0 :(得分:1)

这里有一些非App Engine Java示例:http://code.google.com/p/google-bigquery-tools/source/browse/samples/java/

我使用Sonatype的Maven插件,至少,你的pom.xml应该是这样的:

<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>com.google</groupId>
  <artifactId>google</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

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

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

  <dependencies>
     <dependency>
      <groupId>com.google.api-client</groupId>
      <artifactId>google-api-client</artifactId>
      <version>1.10.3-beta</version>
    </dependency>

    <dependency>
      <groupId>com.google.apis</groupId>
      <artifactId>google-api-services-bigquery</artifactId>
      <version>v2-rev19-1.7.2-beta</version>
    </dependency>

    <dependency>
      <groupId>com.google.oauth-client</groupId>
      <artifactId>google-oauth-client</artifactId>
      <version>1.8.0-beta</version>
    </dependency>
  </dependencies>

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

</project>

答案 1 :(得分:0)

根据我从谷歌外面可以观察到的内容,提出问题的答案是:

  • 没有可用的java示例(还有?),其中包含上传内容。例子 在发布的答案中的地址仅包括查询样本数据 已存在于帐户中。

  • 最接近我需要的样本似乎是 命令行和python示例。但使用它们很复杂 每个样本都是硬接线的 只能使用特定的maven依赖版本,样本不会更新 发布新的API版本时,通常不会提供较旧的API版本 行家。

  • maven问题似乎源于使用一个疯狂的特殊版本 编号系统(例如v2beta1-rev17-1.7.1-beta-beta示例
    以上)。 Maven依赖严格遵守惯例,等等 版本号绝对不符合。对于快速变化的 测试版代码,版本号应该是主要的#.minor#.micro-SNAPSHOT,如maven书中所述。没有异常或专家休息,如评论中所述。

紧急请求:请提供涵盖所有BigQuery功能的工作 java示例,尤其是第1步;上传数据。请将示例与API代码捆绑在一起,以确保它们保持同步。并在整个过程中采用maven惯例,包括追溯。

答案 2 :(得分:0)

在测试了这些库的URL http://google-api-client-libraries.appspot.com/mavenrepo之后,我能够使用它。它不允许浏览,因此nexus将尝试索引此repo并失败。当发生这种情况时,Nexus会阻止对此repo的访问,因此本地构建因缺少依赖性而失败。

为了缓解这种情况,我在Nexus中为此存储库更改了两个设置。

  • 下载远程索引= false
  • AutoBlock Enabled = false

通过这个集合,我能够正确地构建和下载依赖项。

注意:我们也使用GCM-Server Repo for Android,它有同样的问题,应用了相同的解决方案,我们能够缓存新的依赖关系。

相关问题