java – 在Maven项目中管理JAXB生成的类

前端之家收集整理的这篇文章主要介绍了java – 在Maven项目中管理JAXB生成的类前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个基于Maven的项目,其中我尝试添加由“jaxb2-maven-plugin”Maven插件自动生成的一些JAXB类.但是,我的第一个剪辑让我处于循环依赖循环中:

>因为这些JAXB类尚未生成,所以引用它们的其他来源有编译错误.
>因为这些其他源有编译错误,所以这些JAXB类不会生成.

似乎有两个明显的可能性来解决这个问题:

注释掉破坏的引用,以便项目生成自动生成JAXB类.然后将这些生成的源从/ target复制到/ src / main / java中,以便引用它们不会导致编译错误.
>创建一个完全独立的项目,只包含JAXB的东西.将其作为我的主要项目中的依赖项.

我在这里遗漏了什么吗?选项#1看起来很可笑,只不过是人们使用JAXB的方式.选项#2似乎更加理性,但仍然效率低下且繁琐.我真的需要花费一个完全独立的项目的开销才能使用JAXB?

在Maven插件生成它们的同一个项目中,开发人员是否使用更优雅的方法来引用JAXB生成的类?

更新:根据请求,这里是我的POM的相关部分:

<build>
    <plugins>
        <plugin>
            <!-- configure the compiler to compile to Java 1.6 -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>       
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxb2-maven-plugin</artifactId>
            <version>1.4</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>xjc</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!-- The name of your generated source package -->
                <packageName>com.mypackage</packageName> 
            </configuration>
        </plugin>
    </plugins>  
</build>

当我运行mvn clean包时,我看到我的JAXB源生成在/ target子目录下面.但是,这些生成的源不会自动添加到编译阶段的类路径中.

解决方案更新:事实证明,我的编译问题与我在Eclipse中运行的事实有关,而且它的Maven集成与“jaxb2-maven-plugin”有一些问题.有关该问题及其解决方案的更多详细信息,请参阅this StackOverflow question.

解决方法

我建议您将jaxb生成的类(api)和您的BL类(实现)拆分为2个maven项目,每个项目具有单独的pom.xml,并且具有编译顺序的主根pom.xml.那样你就可以建立api.jar了,那么maven会把它安装在本地的repo里面,之后就可以用它作为你实现的依赖.所以它看起来像:
-API\
--pom.xml - for api,jaxb generation
-IMPL\
--pom.xml - for impl,api dependency is here
pom.xml - main pom.xml with references to the projects above

猜你在找的Java相关文章