Wsinport 和 wsgen 工具已从 Java 11 - JEP 320 中删除,但它们可以在 Metro JAX-WS 中找到,现在是 EE4J initiative 的一部分。
像wsimport 这样的命令行工具只不过是调用Java 类com.sun.tools.ws.WsImport 的包装器。这个类包含在 Metro JAX-WS 中(在 maven 工件 jaxws-rt 或 jaxws-tools 或其他中可用)
类可以直接从 Java 生成:
// SomeClass.java
String[] args = new String[]{
"-target", "2.1",
"-s", "src/main/java",
"-keep",
"-Xnocompile",
"-extension",
"-encoding", "UTF-8",
"-wsdllocation", "http://localhost/wsdl",
"src/main/resources/META-INF/SomeService.wsdl"
};
com.sun.tools.ws.WsImport.main(args);
或者可以通过gradle task轻松生成:
// build.gradle
task wsImport(type: JavaExec) {
classpath sourceSets.main.runtimeClasspath
main = "com.sun.tools.ws.WsImport"
args "-target", "2.1",
"-s", "src/main/java",
"-keep",
"-Xnocompile",
"-extension",
"-encoding", "UTF-8",
"-wsdllocation", "http://localhost/wsdl",
"src/main/resources/META-INF/SomeService.wsdl"
}
dependencies {
compile 'com.sun.xml.ws:jaxws-rt:2.3.2-1'
}
在 Java 13 和 Gradle 6 中测试。
最好的部分是,除了“原始”之外,没有额外的插件或花哨的依赖项。