Maven jaxb2:xjc failing to generate code
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>
user1760178
Updated on July 05, 2022Comments
-
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 over 4 yearsNo, 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 about 4 yearsDamn, 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.