Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Maven JAXWS的多个WSDLs配置_Maven_Jax Ws - Fatal编程技术网

使用Maven JAXWS的多个WSDLs配置

使用Maven JAXWS的多个WSDLs配置,maven,jax-ws,Maven,Jax Ws,我需要在Maven JAXWS配置中包含多个WSDL,并且需要为它们指定不同的输出目录,因为wsdlA中的一些方法名称与wsdlB中的方法名称冲突。我使用的是org.jvnet.jax-ws-commons,我需要绑定只应用于wsdlA,而不是wsdlB 这就是我目前的情况: <build> <pluginManagement> <plugins> <plugin> <groupId&

我需要在Maven JAXWS配置中包含多个WSDL,并且需要为它们指定不同的输出目录,因为wsdlA中的一些方法名称与wsdlB中的方法名称冲突。我使用的是org.jvnet.jax-ws-commons,我需要绑定只应用于wsdlA,而不是wsdlB

这就是我目前的情况:

<build>
    <pluginManagement>
      <plugins>
        <plugin> 
          <groupId>org.jvnet.jax-ws-commons</groupId> 
          <artifactId>jaxws-maven-plugin</artifactId> 
          <version>2.1</version> 
          <executions>
            <execution> 
              <goals> 
                <goal>wsimport</goal> 
              </goals>
            </execution> 
          </executions>
          <configuration> 
            <!-- Configure Output -->
            <packageName>com.mycee.project.model</packageName> 
            <sourceDestDir>src/main/java</sourceDestDir>
            <!-- Configure WSDL Location -->
            <wsdlFiles>
              <wsdlFile>
                ${basedir}/src/jaxws/wsdl/wsdla.wsdl
              </wsdlFile>
              <!--
              <wsdlFile> 
                ${basedir}/src/jaxws/wsdl/wsdlb.wsdl
              </wsdlFile>
              -->   
            </wsdlFiles>
            <!-- Configure Binding Location -->
            <bindingDirectory>
              ${basedir}/src/jaxws/binding
            </bindingDirectory>
            <!-- Make Output Verbose -->
            <verbose>true</verbose>
          </configuration> 
        </plugin>         
      </plugins>            
    </pluginManagement>
  </build>

org.jvnet.jax-ws-commons
jaxws-maven插件
2.1
wsimport
com.mycee.project.model
src/main/java
${basedir}/src/jaxws/wsdl/wsdla.wsdl
${basedir}/src/jaxws/binding
真的
更新:

<build>
    <pluginManagement>
      <plugins>
          <!-- WSDL GENERATOR PLUGIN -->
          <!-- mvn jaxws:wsimport    -->
          <plugin> 
              <groupId>org.jvnet.jax-ws-commons</groupId> 
              <artifactId>jaxws-maven-plugin</artifactId> 
              <version>2.3</version> 
              <executions>
                  <!-- WSDL A -->
                  <execution>
                      <id>WSDLA</id>
                      <phase>generate-sources</phase>
                      <goals> 
                          <goal>wsimport</goal> 
                      </goals>
                      <configuration>
                          <packageName>com.mycee.project.model.wsdla</packageName>                                                                    <staleFile>${project.build.directory}/jaxws/stale/wsdl.a.done</staleFile>
                          <wsdlFiles>
                              <wsdlFile>${basedir}/src/jaxws/wsdl/wsdla.wsdl</wsdlFile>
                          </wsdlFiles>
                          <bindingDirectory>${basedir}/src/jaxws/binding</bindingDirectory>
                      </configuration>                          
                  </execution>
                  <!-- WSDL B -->
                  <execution>
                      <id>WSDLB</id>
                      <phase>generate-sources</phase>
                      <goals> 
                          <goal>wsimport</goal> 
                      </goals>
                      <configuration>        
                          <packageName>com.mycee.project.model.wsdlb</packageName>
                          <staleFile>${project.build.directory}/jaxws/stale/wsdl.b.done</staleFile>
                          <wsdlFiles>
                              <wsdlFile>${basedir}/src/jaxws/wsdl/wsdlb.wsdl</wsdlFile>
                          </wsdlFiles>
                      </configuration>
                  </execution>
              </executions>
              <!-- Common Config -->  
              <configuration>
                  <verbose>true</verbose>
                  <wsdlDirectory>
                      ${basedir}/src/jaxws/wsdl
                  </wsdlDirectory>
              </configuration>
          </plugin> 
      </plugins>  
    </pluginManagement>
  </build>

org.jvnet.jax-ws-commons
jaxws-maven插件
2.3
WSDLA
生成源
wsimport
com.mycee.project.model.wsdla${project.build.directory}/jaxws/stale/wsdl.a.done
${basedir}/src/jaxws/wsdl/wsdla.wsdl
${basedir}/src/jaxws/binding
WSDLB
生成源
wsimport
com.mycee.project.model.wsdlb
${project.build.directory}/jaxws/stale/wsdl.b.done
${basedir}/src/jaxws/wsdl/wsdlb.wsdl
真的
${basedir}/src/jaxws/wsdl
在运行mvn clean jaxws:wsimport时,我收到以下通知,但没有生成java代码:

[信息]---jaxws maven插件:2.2:wsimport(默认cli)@ [信息]找不到要处理的WSDL,请指定 至少下列参数之一:wsdlFiles、wsdlDirectory或wsdlurl


首先,不要在pluginManagement块中配置配置。在这种情况下,最好只在pluginManagement块中定义插件的版本。此外,为了满足您的要求,您需要执行以下两种执行:


org.jvnet.jax-ws-commons
jaxws-maven插件
wsdla执行官
wsimport
com.mycee.project.model
${basedir}/src/jaxws/wsdl/wsdla.wsdl
${basedir}/src/jaxws/binding
真的
wsdlb执行器
wsimport
com.mycee.project.model
${basedir}/src/jaxws/wsdl/wsdlb.wsdl
${basedir}/src/jaxws/binding
真的

为每个wsdl都有一个执行元素,并将配置放在其中。您可以将公共配置元素保留在执行元素之外。e、 g:

<build>
<pluginManagement>
  <plugins>
    <plugin> 
      <groupId>org.jvnet.jax-ws-commons</groupId> 
      <artifactId>jaxws-maven-plugin</artifactId> 
      <version>2.1</version> 
      <executions>
        <execution>
          <id>wsdla</id>
          <goals> 
            <goal>wsimport</goal> 
          </goals>
          <configuration> 
             <wsdlFile>
               ${basedir}/src/jaxws/wsdl/wsdla.wsdl
             </wsdlFile>
             <sourceDestDir>target/gen/wsdla</sourceDestDir>
          </configuration> 
        </execution> 
        <execution>
          <id>wsdlb</id>
          <goals> 
            <goal>wsimport</goal> 
          </goals>
          <configuration> 
             <wsdlFile>
               ${basedir}/src/jaxws/wsdl/wsdlb.wsdl
             </wsdlFile>
             <sourceDestDir>target/gen/wsdlb</sourceDestDir>
          </configuration> 
        </execution> 
      </executions>
      <configuration> 
        <!-- Configure Output -->
        <packageName>com.mycee.project.model</packageName> 
        <!-- Configure Binding Location -->
        <bindingDirectory>
          ${basedir}/src/jaxws/binding
        </bindingDirectory>
        <!-- Make Output Verbose -->
        <verbose>true</verbose>
      </configuration> 
    </plugin>         
  </plugins>  

</pluginManagement>

org.jvnet.jax-ws-commons
jaxws-maven插件
2.1
wsdla
wsimport
${basedir}/src/jaxws/wsdl/wsdla.wsdl
target/gen/wsdla
wsdlb
wsimport
${basedir}/src/jaxws/wsdl/wsdlb.wsdl
target/gen/wsdlb
com.mycee.project.model
${basedir}/src/jaxws/binding
真的


另外,不要将生成的代码放在/main/src/java中,因为它不会被清除。

我显然遗漏了一些东西,我创建了两个执行块,都使用…,运行mvn clean jaxws:wsimport,我收到以下通知:[INFO]--jaxws-maven插件:2.2:wsimport(默认cli)@--[信息]找不到要处理的wsdl,请至少指定以下参数之一:wsdlFiles、wsdlDirectory或WSDLURL。根据需要设置wsdlDirectory的文档,因为您没有使用默认值(
${basedir}/src/wsdl.
)。。此外,不要单独调用目标,最好调用生命周期,如
mvn生成源代码。然后您可以查看配置等是否正常。之后使用
mvn软件包
。由于您没有仔细阅读我的帖子,因为在开始的时候,关于插件管理的信息已经被提到了。一个小小的旁注-调用maven的正确目标似乎是
mvn generate sources
,而不是
mvn jaxws:wsimport
。对于这个答案,我显然遗漏了一些东西,我创建了两个执行块,都带有。。。,运行mvn clean jaxws:wsimport时,我收到以下通知:[INFO]--jaxws-maven插件:2.2:wsimport(默认cli)@…--[信息]未找到要删除的WSDL