如何在 jar 文件中引用 xsd schemalocation?

Sah*_*iya 3 xml xsd jar

我有一个 xml 模式 (xsd) 文件,它位于一个 jar 文件中,该文件将包含在运行时类路径中。在我的 Wsdl 中,我需要通过在 jar 文件中提供位置来导入模式。

我尝试使用 XML 目录,但我使用的服务器 (websphere) 无法解析 xml 目录引用。

小智 5

我们遇到了一个类似的问题,其中包含 XSD 的 JAR 被添加到类路径中,我们不得不使用 schemaLocation 从 WSDL 引用它。我们的项目是基于maven的,所以我们使用maven-dependency-plugin的解包目标,在编译前将文件下载到resources文件夹。

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
    <execution>
        <id>unpack</id>
        <phase>generate-sources</phase>
        <goals>
            <goal>unpack</goal>
        </goals>
        <configuration>
            <artifactItems>
                <artifactItem>
                    <groupId>group</groupId>
                    <artifactId>artifact</artifactId>
                    <version>${version}</version>
                    <outputDirectory>${basedir}/src/main/resources/xsd</outputDirectory>
                    <includes>ToDownload.xsd</includes>
                </artifactItem>
            </artifactItems>
        </configuration>
    </execution>
</executions>
Run Code Online (Sandbox Code Playgroud)

这导致 xsd 被下载到名为 xsd 的文件夹中的资源目录。
在 WSDLschemaLocation="xsd/ToDownload.xsd". 这确保在编译期间 WSDL 将引用已下载并在本地可用的 XSD。

  • 作为未来读者的备用说明:我没有设法使用上面的语法包含单个 .xsd 文件,但是当我使用 `&lt;includes&gt;**/*.xsd&lt;/includes&gt;` 时,我已经获得了所有`.xsd` 文件。这就是我真正想要的,所以我没有进一步调查,但由于某些原因,我无法使用上述内容下载单个文件(创建了输出目录,但没有下载文件)。顺便说一句,感谢 Utsab 的回答,这非常有帮助!+1 (2认同)