未调用 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 的以下评论