【问题标题】:Unable to generate SOAP client files from local WSDL file无法从本地 WSDL 文件生成 SOAP 客户端文件
【发布时间】:2018-01-25 21:06:32
【问题描述】:

我在这方面做了很多阅读。显得非常直截了当。如果您看到 pom 文件,您可以看到,我没有从远程 URL 创建类文件,而是拥有必须成为项目一部分的文件。注释掉的配置工作...找到 WSDL 并创建正确的文件。当我尝试在本地驾驶时,没有任何效果。我展示的版本是我尝试使用 maven ${project.basedir} 变量的地方。我试过“/src/main/java”、“src/main/java”,硬编码路径。我该怎么做呢?我已经尝试了所有我见过的例子。这是我的 pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mycompany</groupId>
    <artifactId>abc</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>abc</name>
    <description>consume soap</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
        <relativePath/>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.ws</groupId>
            <artifactId>spring-ws-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
                <plugin>
                    <groupId>org.jvnet.jaxb2.maven2</groupId>
                    <artifactId>maven-jaxb2-plugin</artifactId>
                    <version>0.12.3</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>generate</goal>
                            </goals>
                        </execution>
                    </executions>

                <configuration>
                    <packageName>com.mycompany.abc.domain</packageName>
                    <wsdl>true</wsdl>
                    <xmlschema>false</xmlschema>
                    <schemaFiles>abc.wsdl</schemaFiles>
                    <schemaDirectory>${project.basedir}/src/main/resources</schemaDirectory>
                    <outputDirectory>${project.basedir}/src/main/java</outputDirectory>
                    <clearOutputDir>true</clearOutputDir>
                </configuration>

    <!-- THIS CONFIGURATION WORKS...IF IT COMES FROM A REMOTE PLACE
                    <configuration>
                        <schemaLanguage>WSDL</schemaLanguage>
                        <generatePackage>com.mycompany.abc.domain</generatePackage>
                        <schemas>
                            <schema>
                                <url>http://www.webservicex.com/stockquote.asmx?WSDL</url>
                            </schema>
                        </schemas>
                        <clearOutputDir>false</clearOutputDir>
                    </configuration>
    -->

                </plugin>
            </plugins>
        </pluginManagement>
    </build>

</project>

【问题讨论】:

  • 有人有什么想法吗?当文件是本地文件时,无论我如何运行它,都会收到一条关于没有创建模式的消息

标签: xjc maven-jaxb2-plugin


【解决方案1】:

经过大量试验,这是我的解决方案。仍然不确定为什么之前的迭代不起作用...也许我正在跨越 v1 和 v2?

<configuration>
    <generatePackage>com.ezcorp.peoplesoft.ws</generatePackage>
    <schemaDirectory>${project.basedir}/src/main/resources/wsdl</schemaDirectory>
    <schemaIncludes>
        <include>*.wsdl</include>
    </schemaIncludes>
    <clearOutputDir>true</clearOutputDir>
</configuration>

【讨论】:

  • 谢谢。我显然错过了 ${project.basedir}/
  • 我正在尝试这样做,但它会将所有类放在一个平面结构中,而不是按照其架构定义的包中。 stackoverflow.com/questions/62636121/…
猜你喜欢
  • 2011-07-11
  • 1970-01-01
  • 2013-08-20
  • 2012-12-12
  • 2014-03-19
  • 1970-01-01
  • 2011-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多