2

大規模な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 (指定されたパスが見つかりません)

誰も方法を知っていますか:

  1. 特定のMavenフェーズでプラグインの実行ルートディレクトリを変更しますか?
  2. または、cfx-codegen-plugin が別の実行ルートを使用するように強制しますか?

ありがとう、シャーク

4

0 に答える 0