java – 如何使用JAXB XJC从外部XSD文件生成类
作者:互联网
我有两个项目:
一个
/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