2013-12-24 31 views
1

我是Maven的新手,一直在寻找关于如何从模式文件.avsc构建.avro的教程和Web文档。基于apache.maven.org网站上的文档。我必须添加以下内容无法使用Maven编译和创建.avsc中的.avro文件

<dependency> 
    <groupId>org.apache.avro</groupId> 
    <artifactId>avro</artifactId> 
    <version>1.7.5</version> 
</dependency> 

<plugin> 
    <groupId>org.apache.avro</groupId> 
    <artifactId>avro-maven-plugin</artifactId> 
    <version>1.7.5</version> 
    <executions> 
    <execution> 
     <phase>generate-sources</phase> 
     <goals> 
     <goal>schema</goal> 
     </goals> 
     <configuration> 
     <sourceDirectory>${project.basedir}/src/main/avro/</sourceDirectory> 
     <outputDirectory>${project.basedir}/src/main/java/</outputDirectory> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
    <source>1.6</source> 
    <target>1.6</target> 
    </configuration> 
</plugin> 

我已将相同内容添加到我的POM.xml文件中。我有2个模式文件(.avsc)和下面是我的目录结构与内容

  • PROJECTDIR
    • SRC
      • 主要
        • 的Java
        • 的Avro
          • abc.avsc
        • 资源
    • 测试
  • 的pom.xml

我的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>org.training</groupId> 
    <artifactId>TestAvro</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

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

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.basedir>/Users/vsank2/TestAvro</project.basedir> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.avro</groupId> 
     <artifactId>avro</artifactId> 
     <version>1.7.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.avro</groupId> 
     <artifactId>avro-maven-plugin</artifactId> 
     <version>1.7.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.avro</groupId> 
     <artifactId>avro-compiler</artifactId> 
     <version>1.7.5</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <pluginManagement> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.avro</groupId> 
      <artifactId>avro-maven-plugin</artifactId> 
      <version>1.7.5</version> 
      <executions> 
       <execution> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>schema</goal> 
        </goals> 
        <configuration> 
         <sourceDirectory>${project.basedir}/src/main/avro/</sourceDirectory> 
         <outputDirectory>${project.basedir}/src/main/java/</outputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugin</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
      </configuration> 
     </plugin> 
    </plugins> 
    </pluginManagement> 
    </build> 
</project> 

我执行以下

MVN清洁生成来源,我得到下面的输出

INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building TestAvro 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ TestAvro --- 
[INFO] Deleting /Users/vsank2/TestAvro/target 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 0.514s 
[INFO] Finished at: Mon Dec 23 16:08:51 PST 2013 
[INFO] Final Memory: 2M/81M 
[INFO] ------------------------------------------------------------------------ 

感谢您在这方面的任何帮助。谢谢

回答

2

经过大量的研究,我发现问题是完全与我的.avsc JSON问题。 “命名空间”是完全错误的。只要我修好它。 maven avro插件从模式创建了java类。

+0

请问可以告诉命名空间有什么问题吗?该文件是否与命名空间中的路径存在于相同的路径中?我也面临同样的问题(建立成功,但没有生成的代码),似乎无法找到问题 – weima

+0

你能分享你的avro模式。我的意思是avsc。文件及其存储位置。另外你的avro maven generate-sources生命周期pom.xml片段 – venBigData

+1

我错误地将插件定义放在''标签中。这使得插件不能被执行。一旦我删除这个标签,它会在eclipse中给出错误,但代码已经生成。谢谢!! – weima