加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:04:13 所属栏目:Java 来源:网络整理
导读:我有一个基于Maven的项目,其中我尝试添加由“jaxb2-maven-plugin”Maven插件自动生成的一些JAXB类.但是,我的第一个剪辑让我处于循环依赖循环中: 因为这些JAXB类尚未生成,所以引用它们的其他来源有编译错误. 因为这些其他源有编译错误,所以这些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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读