繁体   English   中英

JAXB maven插件不生成类

[英]JAXB maven plugin not generating classes

我试图从XSD生成java文件,但下面的代码不生成。 如果我取消注释outputDirectory,它可以工作,但首先删除该文件夹。 添加clearOutputDir = false也不会生成任何内容。

<build>
        <plugins>
            <!-- JAXB xjc plugin that invokes the xjc compiler to compile XML schema into Java classes.-->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxb2-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>xjc</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- The package in which the source files will be generated. -->
                    <packageName>uk.co.infogen.camel.message</packageName>
                    <!-- The schema directory or xsd files. -->
                    <sources>
                        <source>${basedir}/src/main/resources/xsd</source>
                    </sources>
                    <!-- The working directory to create the generated java source files. -->
                    <!--<outputDirectory>${basedir}/src/main/java</outputDirectory>
                    <clearOutputDir>false</clearOutputDir>-->
                </configuration>
            </plugin>
        </plugins>
    </build>

我收到的消息是:

[INFO] --- jaxb2-maven-plugin:2.2:xjc (default) @ service-business ---
[INFO] Ignored given or default xjbSources [/Users/aaa/development/workspace/infogen/infogen_example/service-business/src/main/xjb], since it is not an existent file or directory.
[INFO] No changes detected in schema or binding files - skipping JAXB generation.

首先,你永远不应该在src/main/java生成代码。 生成的代码不应该是版本控制的,并且可以随时删除,因为它无论如何都会被重新生成。

生成的代码应始终位于target下,即Maven的构建目录。 jaxb2-maven-plugin默认会在target/generated-sources/jaxb下生成类,并且没有理由改变它。 如果您正在使用Eclipse,则只需将此文件夹添加到构建路径,方法是右键单击它并选择“构建路径>使用源文件夹”。

运行Maven时,您将使用mvn clean install运行它:它将清理target文件夹并从头开始重新生成所有内容:这将导致安全且可维护的构建。 您会发现这将解决您的问题:由于生成的类在构建之前被删除,因此它们将在下一次构建期间正确地重新生成。

当然,如果这个生成过程很长并且你不想每次都这样做,你可以用mvn install运行Maven并配置插件不要通过将clearOutputDir设置为false来删除以前生成的类。 但请注意,虽然构建速度稍快,但如果更新后,您可能无法在XSD中检测到后续错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM