我正在使用maven-jaxb2-plugin从xsd生成一些类。 在儿童pom中定义如下:
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.8.0</version>
<executions>
<execution>
<id>jaxb2-generate</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<forceRegenerate>true</forceRegenerate>
<!-- Generate classes from XSD (XML Schema) using JAXB -->
<schemaDirectory>src/main/resources/com/reportcenter/settings/</schemaDirectory>
<generatePackage>com.reportcenter.settings</generatePackage>
<schemaIncludes>
<include>**/*.xsd</include>
</schemaIncludes>
<strict>false</strict>
<extension>true</extension>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.6.2</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>0.6.2</version>
</plugin>
</plugins>
<args>
<arg>-Xannotate</arg>
<arg>-XtoString</arg>
<arg>-Xcopyable</arg>
</args>
</configuration>
</plugin>
</plugins>
</pluginManagement>
问题是没有从mvn install或mvn compile或mv generate-sources调用jaxb2。 如果我调用mvn jaxb2:generate(作为目标的名称),则可以创建类。 我在这里查看了一些问题并使用了提供的答案,但我仍然遗漏了一些东西。 谢谢。
答案 0 :(得分:6)
免责声明:我是maven-jaxb2-plugin
的作者。
好像你只是配置 pluginManagement
中的插件,但在build
部分中没有实际使用。
这应该是这样的:
<project ...>
...
<build>
<plugins>
...
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.12.3</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
...
</project>
关于您的配置的其他几条评论:
0.8.0
是一个非常旧的版本,0.12.3
是实际版本。maven-compiler-plugin
/ source
版本target
配置1.6
。forceRegenerate
。generatePackage
。jaxb2-basics
的当前版本为0.9.2。答案 1 :(得分:4)
我遇到了与此插件相关的错误,以及Eclipse Maven集成。
大多数搜索答案都没有结果,但往往导致这个问题。所以,我将发布这个问题,并在这里解决其中遇到的任何其他问题。
在命令行的maven中正确使用maven-jaxb2-plugin:0.12.3插件时 - 在Eclipse中,源代码会因以下错误而失败:
目标的执行默认值 org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.12.3:生成失败:A 执行时缺少必需的类 org.jvnet.jaxb2.maven2:Maven的JAXB2-插件:0.12.3:产生: COM /太阳/ XML /结合/ API / ErrorListener
添加包含它正在查找的类的jar文件的各种尝试只会导致另一个类丢失,进入jar文件地狱的兔子洞和错误匹配的无法解析的类。
我不知道这里的问题是否在Eclipse / M2E集成中被破解,或者问题是在maven-jaxb2-plugin的依赖堆栈中。
但解决方案是使用JDK而不是JRE来启动Eclipse本身(而不是安装到eclipse中的JRE / JDK)。
最简单的方法是将 -vm 参数添加到eclipse.ini文件中:
-startup plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
-vm C:\Program Files\Java\jdk1.8.0_31\bin\javaw.exe
--launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20150204-1316
-product
...snip...
答案 2 :(得分:1)
升级到版本0.13.2 + 感谢@lexicore以下评论