2011-08-30 18 views
1

我是Maven的新手,試圖用它從我的XSD生成Java類。maven-jaxb2-plugin沒有生成任何輸出

我的XSD文件在src /主/資源/ XSD

在依賴我,但我不認爲,因爲我使用Java 1.6

<dependency> 
     <groupId>javax.xml.bind</groupId> 
     <artifactId>jaxb-api</artifactId> 
     <version>2.0</version> 
    </dependency> 

在我需要它我有生成部分

<build> 
    <pluginManagement> 
    .. 
     <plugin> 
      <inherited>true</inherited> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.0.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
    .. 
     <plugin> 
      <groupId>org.jvnet.jaxb2.maven2</groupId> 
      <artifactId>maven-jaxb2-plugin</artifactId> 
      <executions> 
       <execution> 
         <goals> 
          <goal>generate</goal> 
         </goals> 
         <configuration> 
          <includeSchemas> 
           <includeSchema>**/test.xsd</includeSchema> 
          </includeSchemas> 

          <generatePackage>com.myproject.adapter.generated</generatePackage> 
          <bindingDirectory>src/main/binding</bindingDirectory> 
          <removeOldOutput>true</removeOldOutput> 
          <verbose>true</verbose> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

但是,當我運行它時,我什麼也得不到。 我已經運行mvn編譯和生成源,用-e和-X標誌來看看輸出,但似乎目標沒有被調用。 任何想法?

回答

2

首先,你應該總是指定其依賴的版本或插件,您正在使用

<groupId>org.jvnet.jaxb2.maven2</groupId> 
<artifactId>maven-jaxb2-plugin</artifactId> 
<version>0.8.0</version> 

,那麼你必須提供一個執行

<schemaDirectory>src/main/resources</schemaDirectory> 
<schemaIncludes> 
    <include>test.xsd</include> 
</schemaIncludes> 

這裏面以下項是一個完整的定義,我已經包含了jaxb2-basics插件,因爲你幾乎總是想要它的功能。

<plugin> 
<groupId>org.jvnet.jaxb2.maven2</groupId> 
<artifactId>maven-jaxb2-plugin</artifactId> 
<version>0.8.0</version> 
<executions> 
    <execution> 
    <id>jaxb-test</id> 
    <phase>generate-sources</phase> 
    <goals> 
     <goal>generate</goal> 
    </goals> 
    <configuration> 
     <forceRegenerate>true</forceRegenerate> 
     <schemaDirectory>src/main/resources</schemaDirectory> 
     <schemaIncludes> 
     <include>test.xsd</include> 
     </schemaIncludes> 
    </configuration> 
    </execution> 
</executions> 
<configuration> 
    <extension>true</extension> 
    <args> 
    <arg>-XtoString</arg> 
    <arg>-Xequals</arg> 
    <arg>-XhashCode</arg> 
    <arg>-Xcopyable</arg> 
    <arg>-Xmergeable</arg> 
    </args> 
    <plugins> 
    <plugin> 
     <groupId>org.jvnet.jaxb2_commons</groupId> 
     <artifactId>jaxb2-basics</artifactId> 
     <version>0.6.0</version> 
    </plugin> 
    </plugins> 
</configuration> 
</plugin> 
+0

非常感謝,這是一個很大的幫助,但是現在它似乎忽略了我放入標記中的任何內容。該日誌現在顯示[錯誤]無法執行目標org.jvb.jaxb2.maven2:maven-jaxb2-plugin:0.7.1:g 項目cciAdapter-core上的enerate(default-cli):執行目標的默認cli org.jvb.jaxb2.maven2:maven-jaxb2-plugin:0.7.1:generate failed:basedir I:\ dev \ adapter \ cciAdapter-core \ src \ main \ resources不存在 - > [Help 1],所以它仍然使用默認值。 –

+0

@Scott你必須指定插件的正確版本,'0.7.1'是一箇舊版本,請參閱我的示例中的最新版本。還要確保你的目錄路徑是正確的,它應該是相對於你的'pom.xml'文件。 –

+0

謝謝Jarrod。我正在關注另一篇博文時,我回到了0.7.1。我今天試過jixb,並認爲它沒有找到它,因爲它是一個多模塊項目。 Jixb有一個 true標籤,但是我沒有爲jaxb找到類似的東西。當我將其移入其中一個模塊時,我更接近成功。 –

相關問題