使用来自另一个 Maven 子模块的 wsdl 文件生成 java 个文件

use wsdl file from another maven submodule to generate java files

我正在开发一个项目,其中包含用于后端和前端的独立子模块以及一些其他子模块。目前,这两个模块都有自己的 wsdl 文件副本,并使用 maven 插件生成 java 文件。

我想要一个 wsdl 文件的副本,所以想用这些 wsdl 文件创建一个 maven 子模块。我希望前端和 bakcend 模块使用来自该子模块的 wsdl 文件来生成 java 文件。 目前,我的 pom 文件中有以下内容,用于在使用来自同一模块的 wsdl 时生成 java 源文件。

<plugin> 
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-codegen-plugin</artifactId>
        <version>3.4.4</version>
        <executions>
            <execution>
             <id>wsdl1</id>
                <phase>generate-sources</phase>
                <configuration>
                <sourceRoot>${project.build.directory}/generated-sources</sourceRoot>
                <wsdlOptions>
                    <wsdlOption>
                    <wsdl>${project.basedir}/src/main/resources/wsdl/ABC.wsdl</wsdl>
                         <extraargs>
                         <extraarg>-p</extraarg>
                         <extraarg>com.xxxx.yyy.zzzzz.abc</extraarg>
                         <extraarg>-verbose</extraarg>
                         </extraargs>
                    </wsdlOption>                   
                </wsdlOptions>
                </configuration>
                <goals>
                    <goal>wsdl2java</goal>
                </goals>
            </execution>
        </executions>
    </plugin

我该怎么做?

我可以通过两种方式做到这一点。这两个都很好用。对于这两种方法,我首先创建了另一个子模块并将所有 wsdl 文件移到那里。

  1. 使用maven-resources-plugin首先将wsdl文件复制到每个服务和ui模块。在我的 pom.xml 文件
  2. 中没有其他更改被要求 uired
 <plugin>
      <artifactId>maven-resources-plugin</artifactId>
      <groupId>org.apache.maven.plugins</groupId>
      <version>3.2.0</version>
      <executions>
          <execution>
          <id>copy-wsdl</id>
          <phase>generate-sources</phase>
          <goals>
              <goal>copy-resources</goal>
          </goals>
          <configuration>
              <outputDirectory>${project.basedir}/src/main/resources/wsdl</outputDirectory>
              <overwrite>true</overwrite>
              <resources>
              <resource>
              <directory>../common/src/main/resources/wsdl</directory>
              <includes>
              <include>*.wsdl</include>
              </includes>
              </resource>
              </resources>
          </configuration>
          </execution>
      </executions>
    </plugin>
  1. 另一种方法是在生成 java 代码时仅从公共位置引用 wsdl 文件
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>3.4.4</version>
  <executions>
      <execution>
      <id>wsdl1</id>
      <phase>generate-sources</phase>
      <configuration>
      <sourceRoot>${project.build.directory}/generated-sources</sourceRoot>
          <wsdlOptions>
              <wsdlOption>
              <wsdl>../common/src/main/resources/wsdl/ABC.wsdl</wsdl>
              <extraargs>
                  <extraarg>-p</extraarg>
                  <extraarg>com.xxxx.yyy.zzzzz.abc</extraarg>
                  <extraarg>-verbose</extraarg>
              </extraargs>
              </wsdlOption>                   
          </wsdlOptions>
      </configuration>
      <goals>
      <goal>wsdl2java</goal>
      </goals>
      </execution>
  </executions>
</plugin>