未调用 jaxb2 目标
jaxb2 goal is not invoked
我正在使用 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>
问题是 jaxb2 不是从 mvn install 或 mvn compile 或 mv generate-sources 调用的。
如果我调用 mvn jaxb2:generate (作为目标的名称),类就创建好了。
我在这里查看了一些问题并使用了提供的答案,但我仍然遗漏了一些东西。
谢谢。
免责声明:我是 maven-jaxb2-plugin
.
的作者
似乎你只配置 pluginManagement
中的插件,但实际上 使用 它 [=13] =]部分。
它应该是这样的:
<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,您不再需要使用
source
/target
版本 1.6
. 配置 maven-compiler-plugin
- Do not use
forceRegenerate
.
- 考虑使用绑定文件代替
generatePackage
。
jaxb2-basics
的当前版本是 0.9.2。
我运行遇到一个与此插件和 Eclipse Maven 集成相关的错误。
大多数对答案的搜索都没有结果,但通常会转到此主题。因此,我将 post 解决这个问题,并在此处解决任何其他 运行 问题。
在 Maven 的命令行中正确使用 maven-jaxb2-plugin:0.12.3 插件时 - 在 Eclipse 中,源代码生成将失败并出现以下错误:
Execution default of goal
org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.12.3:generate failed: A
required class was missing while executing
org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.12.3:generate:
com/sun/xml/bind/api/ErrorListener
尝试添加包含它正在寻找的 class 的 jar 文件的各种尝试只会导致另一个 class 丢失,进入 jar 文件地狱的兔子洞并且不匹配 class无法解决。
我不知道这里的问题是在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...
升级到版本 0.13.2 +
感谢@lexicore 的以下评论
我正在使用 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>
问题是 jaxb2 不是从 mvn install 或 mvn compile 或 mv generate-sources 调用的。 如果我调用 mvn jaxb2:generate (作为目标的名称),类就创建好了。 我在这里查看了一些问题并使用了提供的答案,但我仍然遗漏了一些东西。 谢谢。
免责声明:我是 maven-jaxb2-plugin
.
似乎你只配置 pluginManagement
中的插件,但实际上 使用 它 [=13] =]部分。
它应该是这样的:
<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,您不再需要使用
source
/target
版本1.6
. 配置 - Do not use
forceRegenerate
. - 考虑使用绑定文件代替
generatePackage
。 jaxb2-basics
的当前版本是 0.9.2。
maven-compiler-plugin
我运行遇到一个与此插件和 Eclipse Maven 集成相关的错误。
大多数对答案的搜索都没有结果,但通常会转到此主题。因此,我将 post 解决这个问题,并在此处解决任何其他 运行 问题。
在 Maven 的命令行中正确使用 maven-jaxb2-plugin:0.12.3 插件时 - 在 Eclipse 中,源代码生成将失败并出现以下错误:
Execution default of goal org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.12.3:generate failed: A required class was missing while executing org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.12.3:generate: com/sun/xml/bind/api/ErrorListener
尝试添加包含它正在寻找的 class 的 jar 文件的各种尝试只会导致另一个 class 丢失,进入 jar 文件地狱的兔子洞并且不匹配 class无法解决。
我不知道这里的问题是在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...
升级到版本 0.13.2 + 感谢@lexicore 的以下评论