ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – 如何使用JAXB XJC从外部XSD文件生成类

2019-07-17 17:01:49  阅读:316  来源: 互联网

标签:java xsd jaxb xjc


我有两个项目:

一个
 /src/main/resources/schema.xsd
 的pom.xml


/ SRC /主/根
的pom.xml

我想在B项目中生成来自XSD的类,它存在于A Project中

在B项目的pom.xml中我有:

<dependencies>
    <dependency>
        <groupId>test</groupId>
        <artifactId>A</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>
<build>
    <plugins>
       <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxb2-maven-plugin</artifactId>
        <executions>
            <execution>
                <id>xjc</id>
                <goals>
                    <goal>xjc</goal>
                </goals>
            </execution>
            </executions>
            <configuration>
                <schemaDirectory>src/main/resources</schemaDirectory>
                <outputDirectory>src/main/gen</outputDirectory>
            </configuration>
        </plugin>
    </plugins>

</build>

但是在类路径中找不到xsd文件:

无法在项目B上执行目标org.codehaus.mojo:jaxb2-maven-plugin:1.5:xjc(xjc):未找到任何模式

如何使用其他项目的xsd?

解决方法:

此配置的问题是< schemaDirectory>期望文件名/路径.关于File的事情是它在文件系统上查找文件,从当前工作目录中搜索.在这种情况下项目根.但是项目A的资源不在项目B的src / main / resources中.它是一个类路径资源,其中(当在maven中构建时),src / main / resources甚至不再存在.

我从未尝试过使用jaxb2-maven-plugin,所以我不确定它是否可行.

但是对于maven-jaxb2-plugin,它允许Compiling a schema from a Maven artifact.你可以这么类似

<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.9.0</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <schemas>
            <schema>
                <dependencyResource>
                    <groupId>projecta.groupid</groupId>
                    <artifactId>project-a</artifactId>
                    <version>${project.version}</version>
                    <resource>/schema.xsd</resource>
                </dependencyResource>
            </schema>
        </schemas>
        <generateDirectory>src/main/gen/</generateDirectory>
        <generatePackage>mypackage</generatePackage> 
    </configuration>
</plugin>

在这种情况下,它的资源(schema.xsd)位于项目A的src / main / resources中.该插件将生成类文件到mypackage包并获取src / main / gen

标签:java,xsd,jaxb,xjc
来源: https://codeday.me/bug/20190717/1490404.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有