I have added the following plugin into the Maven build in pom.xml
我已将以下插件添加到pom.xml中的Maven构建中
<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.
我很困惑,为什么插件没有引用配置中指定的路径和文件。
7 个解决方案
#1
Version 2.1 has changed how sources are specified
版本2.1已更改了指定源的方式
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
我有一整个其他问题的世界所以坚持使用1.6,因为jshark建议这是一个很好的计划
#2
version 2.1 has a bug.
版本2.1有一个错误。
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>
#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)
关于插件定义(这是一般的好习惯)
#4
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>
#5
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 :
我通过将编译器版本设置为JDK 1.8和jaxb2-maven-plugin 1.5版来实现它。根据文档,它将以最小JDK 1.6工作[如果链接在站点中发生更改,则链接可能会丢失]。例如 :
<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>
#6
I resolved it by checking "Force Update of Snapshot/Release" option in eclipse maven update.
我通过在eclipse maven update中选中“Force Update of Snapshot / Release”选项来解决它。
It forces it to update all of the related dependencies.
它强制它更新所有相关的依赖项。
#7
It will be works, if you just add xerces dependency to end of your jaxb plugin declaration. It's so simple: the plugin just need some class to execution. Give it him now :) I. Senatov.
如果您只是将xerces依赖项添加到jaxb插件声明的结尾,它将会起作用。它很简单:插件只需要一些类来执行。现在就给他:)我。塞纳托夫。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>generate-sources</phase>
<id>xjc-dtd</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<arguments>-dtd</arguments>
<dtd>true</dtd>
<!-- The package of your generated sources -->
<packageName>mi.minet.lurc.dtd</packageName>
<schemaDirectory>src/main/resources/dtd</schemaDirectory>
<schemaFiles>lurc.dtd</schemaFiles>
</configuration>
</execution>
<execution>
<phase>generate-sources</phase>
<id>xjc-xsd</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<packageName>mi.minet.lurc.xsd.configuration</packageName>
<schemaDirectory>src/main/resources/xsd</schemaDirectory>
<schemaFiles>configuration.xsd</schemaFiles>
<clearOutputDir>false</clearOutputDir>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.11.0</version>
</dependency>
</dependencies>
</plugin>
#1
Version 2.1 has changed how sources are specified
版本2.1已更改了指定源的方式
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
我有一整个其他问题的世界所以坚持使用1.6,因为jshark建议这是一个很好的计划
#2
version 2.1 has a bug.
版本2.1有一个错误。
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>
#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)
关于插件定义(这是一般的好习惯)
#4
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>
#5
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 :
我通过将编译器版本设置为JDK 1.8和jaxb2-maven-plugin 1.5版来实现它。根据文档,它将以最小JDK 1.6工作[如果链接在站点中发生更改,则链接可能会丢失]。例如 :
<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>
#6
I resolved it by checking "Force Update of Snapshot/Release" option in eclipse maven update.
我通过在eclipse maven update中选中“Force Update of Snapshot / Release”选项来解决它。
It forces it to update all of the related dependencies.
它强制它更新所有相关的依赖项。
#7
It will be works, if you just add xerces dependency to end of your jaxb plugin declaration. It's so simple: the plugin just need some class to execution. Give it him now :) I. Senatov.
如果您只是将xerces依赖项添加到jaxb插件声明的结尾,它将会起作用。它很简单:插件只需要一些类来执行。现在就给他:)我。塞纳托夫。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>generate-sources</phase>
<id>xjc-dtd</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<arguments>-dtd</arguments>
<dtd>true</dtd>
<!-- The package of your generated sources -->
<packageName>mi.minet.lurc.dtd</packageName>
<schemaDirectory>src/main/resources/dtd</schemaDirectory>
<schemaFiles>lurc.dtd</schemaFiles>
</configuration>
</execution>
<execution>
<phase>generate-sources</phase>
<id>xjc-xsd</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<packageName>mi.minet.lurc.xsd.configuration</packageName>
<schemaDirectory>src/main/resources/xsd</schemaDirectory>
<schemaFiles>configuration.xsd</schemaFiles>
<clearOutputDir>false</clearOutputDir>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.11.0</version>
</dependency>
</dependencies>
</plugin>