web-dev-qa-db-fra.com

Maven Jaxb2 xjc plugin error Aucun schéma n'a été trouvé

Ces derniers jours, j'ai passé du temps sur JAXB pour convertir XSD en Java Class et vice versa. Voici un très bon tutoriel pour les débutants, http://www.journaldev.com/1312/how-to-generate-Java-classes-from-xsd-using-xjc-maven-plugin . Je suis les étapes à la lettre, mais je reçois toujours une erreur quand mvn clean install

Voici mon fichier 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>

Mais quand je tape mvn clean install, cela me donne toujours l'erreur suivante:

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

Quelqu'un peut-il me montrer la cause ou simplement me dire à quoi devrais-je me référer pour plus d'informations? 

Une autre question est: selon cette question Différence de plugins Maven JAXB , il y a au moins trois plugins jaxb. Tous ces plugins sont-ils tous générés aux mêmes fins? Si oui, pourquoi? 

Merci d'avance!

10
mCY

Comme vous n'avez pas fourni de variable schemaDirectory, le plug-in tente de générer des sources Java à partir de tous les fichiers de schéma XML situés dans le répertoire de schéma par défaut . Vous devez configurer le plugin en fonction de la 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>
15
willome

Essayez de vous assurer que jaxb.xsd est présent sous src/main/resources , le plugin est en alerte, car il ne peut pas trouver le schéma à l’emplacement spécifié.

2
Ravi Kiran Y

Nous pouvons utiliser comme ci-dessous dans le fichier 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>
0
Subhasish Sahu