我正在使用 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/