大規模なANTプロジェクトをMaven構造に(自動的に)変換するためのツールを構築しています。プロジェクトには Web サービスが含まれています。したがって、入力 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: Problem parsing './src/wsdl/Test.xsd'.: java.io.FileNotFoundException: C:\Users\test\Desktop\ multimod\src\wsdl\Test.xsd (指定されたパスが見つかりません)
誰も方法を知っていますか:
- 特定のMavenフェーズでプラグインの実行ルートディレクトリを変更しますか?
- または、cfx-codegen-plugin が別の実行ルートを使用するように強制しますか?
ありがとう、シャーク