2013-12-24 53 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