java - jaxws-maven-plugin 解析相对于类位置的 WSDL 位置,为什么?

标签 java maven wsdl jax-ws maven-plugin

我正在使用 jaxws-maven-plugin 版本 2.1。我从 jar 资源中发现了为 WSDL 位置生成的非常奇怪的代码:

                <configuration>
                    <keep>true</keep>
                    <sourceDestDir>${basedir}/src/main/java</sourceDestDir>
                    <extension>true</extension>
                    <wsdlDirectory>${basedir}/src/main/resources/wsdl</wsdlDirectory>
                    <packageName>my.package.gen</packageName>
                    <wsdlLocation>wsdl/*</wsdlLocation>
                    <wsdlFiles>
                        <wsdlFile>mywsdl.wsdl</wsdlFile>                            
                    </wsdlFiles>
                </configuration>

生成的代码是:

static {
    URL url = null;
    try {
        URL baseUrl;
        baseUrl = my.package.gen.My_Service.class.getResource(".");
        url = new URL(baseUrl, "wsdl/mywsdl.wsdl");
    } catch (MalformedURLException e) {
        logger.warning("Failed to create URL for the wsdl Location: 'wsdl/mywsdl.wsdl', retrying as a local file");
        logger.warning(e.getMessage());
    }
    MYSERVICE_WSDL_LOCATION = url; }

因此,wsdl 文件是在生成的类驻留目录(包)中查找的,而不是在主 jar 目录中,这符合逻辑。并且找不到 WSDL。

jaxws-maven-plugin的bug,还是我配置的错误?

最佳答案

您应该使用 jaxws-maven-plugin 版本 2.3 而不是 2.1,结果将如您所料。

2.3 版本的输出是这样的(如果你的 wsdl 文件夹在 src/main/resources 下):

URL url = <Any>.class.getClassLoader().getResource("wsdl/anywsdl.wsdl");

关于java - jaxws-maven-plugin 解析相对于类位置的 WSDL 位置,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14254838/

相关文章:

java - 窗口内存提升

java - Maven 无法解析类

c# - 无法使用 WSDL 定义

java - WSDL 出现次数为 ="0",数据未发送

java - 在单个数组中添加浮点值和字符串值,并使用它来写入 .CSV 文件

java - 没有下载 org.springframework :org. springframework.core :3. 2.2.RELEASE 的文件

java - 放入 POM 内存中的 git commit id 不会进入 list

java - 在没有 Maven 的情况下使用 Jclouds

java - 使用 WSO2 API 管理器管理 WSDL Soap 操作

java - 为什么用 main() 和输出而不是 JUnit 测试来编写示例代码