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

最佳答案

免责声明:我是 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
  • 考虑使用绑定(bind)文件代替generatePackage
  • jaxb2-basics的当前版本是0.9.2。
  • 关于jaxb2目标未调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27767384/

    10-12 05:25