我正在构建一些工具来(自动)将大型 ANT 项目转换为 Maven 结构。该项目包含网络服务。因此,我无法更改输入的 wsdl / xsd 文件。这是我的输入 wsdl 文件。它包含对来自项目基目录的类型定义的引用。
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://schemas.test.com/test" name="Test">
<wsdl:import namespace="http://schemas.test.com/test" location="./src/wsdl/Test.xsd"/>
<wsdl:types>
</wsdl:types>
</wsdl:definitions>
这是我的 Maven 插件配置:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>wsdl2java</goal>
</goals>
<configuration>
<sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>
<wsdlRoot>${project.build.directory}/../src/wsdl/</wsdlRoot>
<includes>
<include>**/*.wsdl</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
构建子模块工作正常,因为 cfx-codegen-plugin 似乎将 ${project.basedir} 作为执行根目录。
但是,当我尝试构建完整的多模块项目时,cfx-codegen-plugin 似乎恢复为 project.parent.basedir。我收到以下构建错误:
原因:WSDLException(在 /wsdl:definitions/wsdl:import):faultCode=PARSER_ERROR:解析“./src/wsdl/Test.xsd”时出现问题。:java.io.FileNotFoundException:C:\Users\test\Desktop\ multimod\src\wsdl\Test.xsd(系统找不到指定的路径)
有谁知道如何:
- 在特定的 Maven 阶段更改插件的执行根目录?
- 还是强制 cfx-codegen-plugin 使用替代执行根?
谢谢,sjaak