Maven jaxb2:xjc failing to generate code

58,202

Solution 1

Version 2.1 has changed how sources are specified

http://mojo.codehaus.org/jaxb2-maven-plugin/xjc-mojo.html#sources

e.g

<configuration>
...
  <sources>
     <source>some/explicit/relative/file.xsd</source>
     <source>/another/absolute/path/to/a/specification.xsd</source>
     <source>a/directory/holding/xsds</source>
 </sources>
</configuration>

I'm having a whole world of other problems so sticking with 1.6 as jshark suggested is a good plan

Solution 2

version 2.1 has a bug.

You can use <version>2.2</version> with the new syntax:

<configuration>
...
  <sources>
     <source>some/explicit/relative/file.xsd</source>
     <source>/another/absolute/path/to/a/specification.xsd</source>
     <source>a/directory/holding/xsds</source>
 </sources>
</configuration>

You can use <version>1.6</version> with the old syntax:

<configuration>
    ...
    <schemaDirectory>${basedir}/src/main/resources/xsd</schemaDirectory>
    <schemaFiles>myapp.xsd</schemaFiles> 
</configuration>

Solution 3

I had the same problem today, and resolved it by putting:

<version>1.6</version>

on the plugin definition (which is in general good practice to do)

Solution 4

I got it working by setting compiler version to JDK 1.8 and jaxb2-maven-plugin version 1.5 According to the documention it will work with minimum JDK 1.6 [ The link may drop dead if its changed in the site]. For example :

<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>com.mntq.jaxb.xsd.to.pojo</groupId>
  <artifactId>XsdToPojo</artifactId>
  <version>0.0.1-SNAPSHOT</version>


  <build>
        <finalName>PersistencePoJO</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
             <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 package of your generated sources -->
                <packageName>com.mntq.jaxb.pojo</packageName>
            </configuration>
        </plugin>
        </plugins>
    </build>
</project> 

Solution 5

We can also use as below:

           <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>
Share:
58,202
user1760178
Author by

user1760178

Updated on July 05, 2022

Comments

  • user1760178
    user1760178 almost 2 years

    I have added the following plugin into the Maven build in pom.xml

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxb2-maven-plugin</artifactId>
        <executions>
            <execution>
                <phase>generate-sources</phase>
                <goals>
                    <goal>xjc</goal>
                </goals>
                <configuration> 
                    <extension>true</extension>                             
                    <clearOutputDir>false</clearOutputDir>
                    <schemaDirectory>${basedir}/src/main/resources/xsd</schemaDirectory>
                    <schemaFiles>myapp.xsd</schemaFiles>                                                        
                    <outputDirectory>${basedir}/src/main/java</outputDirectory>         
                    <bindingDirectory>src/main/resources/xsd</bindingDirectory>     
                    <bindingFiles>myapp-bindings.xjb</bindingFiles>
                </configuration>
            </execution>
        </executions>                       
    
    </plugin>
    

    Following is the build error.

    [INFO] Ignored given or default xjbSources [C:\WorkSpace\MyApp\src\main\xjb], since it is not an existent file or directory.
    [INFO] Ignored given or default sources [C:\WorkSpace\MyApp\src\main\xsd], since it is not an existent file or directory.
    [WARNING] No XSD files found. Please check your plugin configuration.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 3.273s
    [INFO] Finished at: Tue May 12 16:24:26 EDT 2015
    [INFO] Final Memory: 9M/124M
    [INFO] ------------------------------------------------------------------------
    [WARNING] The requested profile "dev-artifactory" could not be activated because it does not exist.
    [ERROR] Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:2.1:xjc (default) on project pml-jasypt-authentication-service: MojoExecutionException: NoSchemasException -> [Help 1]
    

    I am confused, why is the plugin not referring to the paths and files specified in the configuration.

  • Semo
    Semo over 4 years
    No, not needed, because the jaxb2-maven-plugin does not rely on xerces to work. I just tried it, with and without your tip, it wasn't even loaded. I don't understand, why you drop your pom snippet here. Did you read the Exception from the OP? The problem here is, that no Schema was found, not a compile error, due to some missing library.
  • luis.espinal
    luis.espinal about 4 years
    Damn, it's likes changes everywhere. I'm migrating a system from JDK7 to JDK11, and it's a whole can of worms with getting XSD working right.