没有调用jaxb2目标

时间:2015-01-04 16:00:09

标签: jaxb maven-3 lifecycle maven-jaxb2-plugin

我正在使用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(作为目标的名称),则可以创建类。 我在这里查看了一些问题并使用了提供的答案,但我仍然遗漏了一些东西。 谢谢。

3 个答案:

答案 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,您不再需要使用maven-compiler-plugin / source版本target配置1.6
  • Do not use 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以下评论