2013-07-04 2 views
10

В эти дни я провел некоторое время в JAXB для преобразования XSD в Java Class и наоборот. Вот очень хороший учебник для начинающих, http://www.journaldev.com/1312/how-to-generate-java-classes-from-xsd-using-xjc-maven-plugin. Я выполняю шаги строго, но всегда получаю ошибку, когда mvn clean installОшибка Maven Jaxb2 xjc Ошибка Схемы не найдены

Это мой файл 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>jd</groupId> 
    <artifactId>jd</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 


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


    <build> 
     <plugins> 
      <!-- Plugin required to build java classes from XSD using XJC --> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>jaxb2-maven-plugin</artifactId> 
       <version>1.5</version> 
       <executions> 
        <execution> 
         <id>xjc</id> 
         <goals> 
          <goal>xjc</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <!-- The name of your generated source package --> 
        <arguments>-extension -npa -b ${project.basedir}/src/main/java/com/moodys/jaxb/global.xjb</arguments> 
       </configuration> 
      </plugin> 

     </plugins> 
    </build> 

</project> 

Но когда я печатаю mvn clean install, она всегда дает мне ошибку следующим образом:

C:\Users\congy\Desktop\Work\workspace\JaxbFromClass>mvn clean jaxb2:xjc 
[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building jd 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ jd --- 
[INFO] Deleting C:\Users\congy\Desktop\Work\workspace\JaxbFromClass\target 
[INFO] 
[INFO] --- jaxb2-maven-plugin:1.5:xjc (default-cli) @ jd --- 
[INFO] Generating source... 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 0.487s 
[INFO] Finished at: Thu Jul 04 19:09:37 CST 2013 
[INFO] Final Memory: 4M/122M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:1.5:xjc (default-cli) on project jd: No schemas have been found -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 

Может кто-нибудь показать мне причину или просто скажите мне, что я должен обратиться к для получения дополнительной информации?

Другой вопрос: согласно этому вопросу Difference of Maven JAXB plugins, есть как минимум три плагина jaxb. Итак, все эти плагины созданы для тех же целей? Если да, то почему?

Заранее благодарен!

ответ

13

Как вы не указали schemaDirectory, плагин пытается сгенерировать источники Java из всех файлов схемы XML в the default schema directory. Вы должны настроить плагин в соответствии с documentation:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>jaxb2-maven-plugin</artifactId> 
    <version>1.5</version> 
    <executions> 
    <execution> 
     <id>id1</id> 
     <goals> 
    <goal>xjc</goal> 
     </goals> 
     <configuration> 
     <outputDirectory>target/generated-sources/jaxb</outputDirectory> 
     <packageName>com.your.package.jaxb</packageName> 
     <schemaDirectory>src/main/xsd</schemaDirectory> 
     <schemaFiles>jaxb.xsd</schemaFiles> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
+0

Делать это. Тем не менее такая же ошибка. – jamie

+0

Попробуйте удалить следующую строку: target/generated-sources/jaxb BlueLettuce16

2

Try, чтобы убедиться, что jaxb.xsd присутствует при SRC/основные/ресурсы, плагин Варинга, поскольку он coudn't найти схему в указанном месте.

+0

Что на самом деле jaxb.xsd? Это имя файла? – zygimantus

0

Мы можем использовать, как показано ниже в pom.xml файл

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>jaxb2-maven-plugin</artifactId> 
     <version>1.5</version> 
     <executions> 
      <execution> 
       <id>id1</id> 
       <goals> 
        <goal>xjc</goal> 
       </goals> 
       <configuration> 
        <outputDirectory>src/main/java</outputDirectory> 
        <clearOutputDir>false</clearOutputDir> 
        <packageName>com.subu.xsd.model</packageName> 
        <schemaDirectory>src/main/java/schemadir</schemaDirectory> 
        <schemaFiles>XYZ.xsd</schemaFiles> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin>