构建引用其他项目XSD文件的Maven项目时遇到依赖问题
解决common-dependent构建时XSD依赖问题
前提确认
先检查common-domain构建出的JAR包,确保其中包含/xsd/XBase.xsd等XSD文件(Maven默认会将src/main/resources下的文件打包到JAR对应路径,可解压JAR直接验证)。
步骤1:添加common-domain依赖
在common-dependent的Maven配置文件pom.xml中,加入对common-domain的依赖:
<dependencies> <dependency> <groupId>你的项目组ID</groupId> <artifactId>common-domain</artifactId> <version>对应版本号</version> </dependency> </dependencies>
步骤2:配置XSD生成插件(以jaxb2-maven-plugin为例)
提供两种可直接落地的配置方案:
方案A:用Catalog文件映射XSD路径
- 在common-dependent中创建
src/main/resources/catalog.cat文件,内容如下:
PUBLIC "bob://XBase" "classpath:/xsd/XBase.xsd"
- 修改jaxb2-maven-plugin的配置,引入这个Catalog文件:
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxb2-maven-plugin</artifactId> <version>2.5.0</version> <executions> <execution> <goals> <goal>xjc</goal> </goals> </execution> </executions> <configuration> <catalog>src/main/resources/catalog.cat</catalog> <schemaDirectory>src/main/resources/xsd</schemaDirectory> </configuration> </plugin> </plugins> </build>
方案B:直接在插件中引入依赖资源
无需额外文件,直接在插件配置里指定从common-domain的JAR中加载所需XSD:
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxb2-maven-plugin</artifactId> <version>2.5.0</version> <executions> <execution> <goals> <goal>xjc</goal> </goals> </execution> </executions> <configuration> <schemaDirectory>src/main/resources/xsd</schemaDirectory> <dependencyResources> <dependencyResource> <groupId>你的项目组ID</groupId> <artifactId>common-domain</artifactId> <resource>xsd/XBase.xsd</resource> </dependencyResource> <!-- 若还有其他依赖的XSD(如XCode.xsd),继续添加此节点 --> </dependencyResources> </configuration> </plugin> </plugins> </build>
验证构建
执行mvn clean install,插件会自动从common-domain的JAR中加载XBase.xsd,完成MySample.xsd的代码生成和项目构建。
内容的提问来源于stack exchange,提问作者NastyDiaper
相关产品推荐
相关产品推荐

