現在、wsimportを必要とするプロジェクトに取り組んでいますが、JDK11を使用していますが、このバージョン以降、wsimportがJDKから削除されたことがわかりました。
答えを探して、この依存関係を追加しようとしましたが、現時点では機能していません。
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.2.11</version>
</dependency>
私が知らないwsimportの代替品はありますか?
ありがとうございました !
現在、org.codehaus.mojo:jaxws-maven-plugin:2.5の直接の代替としてフォークを使用できます。
<plugin>
<groupId>com.helger.maven</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.6</version>
<configuration>
...
</configuration>
</plugin>
https://github.com/phax/jaxws-maven-plugin 。 jdk11でうまく機能します
他の人に役立つ場合に備えて、JDK11へのアップグレードに関する調査で見つけたものを追加します。
WsimportはJDKの一部として廃止されましたが、Eclipse Foundationにオープンソースで提供されていました。次のリンクからダウンロードできます。
[ https://repo1.maven.org/maven2/com/Sun/xml/ws/jaxws-ri/2.3.0/jaxws-ri-2.3.0.Zip] [1]
彼らは、wsimportを実行可能ファイルから、jaxws-tools.jarファイルを呼び出すbat/shスクリプトに変更しました。私は実際にそれが動作するのを見たことがなく、常にClassNotFoundExceptionを取得します:javax.activation.DataSource。 javax.activation-api-1.2.0.jarを含めるようにスクリプトを変更しましたが、まだ機能しません。 Mavenを使用してビルドを試みるか、コマンドラインで実行するかは問題ではありません。
これは私のプラグイン設定でした:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.5</version>
<dependencies>
<dependency>
<groupId>com.Sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>javax.activation-api</artifactId>
<version>1.2.0</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>app-wsdl-exec</id>
<phase>generate-sources</phase>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<executable>${tool.wsimport}</executable>
<wsdlFiles>
<wsdlFile>${basedir}/src/main/resources/app.wsdl</wsdlFile>
</wsdlFiles>
<bindingDirectory>src/main/resources/binding</bindingDirectory>
<bindingFiles>
<bindingFile>ws-binding.xml</bindingFile>
</bindingFiles>
<packageName>com.app.ws</packageName>
<staleFile>${project.build.directory}/jaxws/stale/APP.done</staleFile>
<sourceDestDir>${basedir}/src/main/Java</sourceDestDir>
<xnocompile>false</xnocompile>
<useJdkToolchainExecutable>false</useJdkToolchainExecutable>
<keep>true</keep>
</configuration>
</execution>
</executions>
</plugin>
また、Windows上で開発し、JenkinsがLinux上でビルドできるように、次のものも使用しました。
<profiles>
<profile>
<id>win</id>
<activation>
<os>
<family>windows</family>
</os>
</activation>
<properties>
<tool.wsimport>${env.JAXWS_HOME}/bin/wsimport.bat</tool.wsimport>
</properties>
</profile>
<profile>
<id>nix</id>
<activation>
<os>
<family>!windows</family>
</os>
</activation>
<properties>
<tool.wsimport>${env.JAXWS_HOME}/bin/wsimport.sh</tool.wsimport>
</properties>
</profile>
</profiles>
Jaxws-maven-pluginはJDK 11用にまだ更新されていません。プロジェクトで pull request が開いていますが、まだマージされていません。
Wsimportの一時的な解決策がここに提案されています: https://github.com/javaee/metro-jax-ws/issues/1251#issuecomment-441424365 、おそらくLinuxで正常に動作します。
このプロジェクトでは、Windows環境で作業しており、次の例に従ってwsimportを修正しました。
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>generate-sources</phase>
<configuration>
<target>
<mkdir dir="target/generated-sources/wsimport"/>
<property name="plugin_classpath" refid="maven.plugin.classpath" />
<exec executable="Java">
<arg value="-classpath"/>
<arg value="${plugin_classpath}"/>
<arg value="com.Sun.tools.ws.WsImport"/>
<arg value="-extension"/>
<arg value="-Xnocompile"/>
<arg value="-wsdllocation"/>
<arg value="/MyWSDL.wsdl"/>
<arg value="-s"/>
<arg value="target/generated-sources/wsimport"/>
<arg value="-p"/>
<arg value="com.company.client.generated"/>
<arg value="src/main/resources/MyWSDL.wsdl"/>
</exec>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>1.0b2</version>
</dependency>
<dependency>
<groupId>javax.jws</groupId>
<artifactId>javax.jws-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.Sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0.1</version>
</dependency>
<dependency>
<groupId>com.Sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.2</version>
</dependency>
<!-- xml.ws module -->
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.Sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.3.1</version>
<exclusions>
<exclusion>
<!-- declare the exclusion here -->
<groupId>org.glassfish.jaxb</groupId>
<artifactId>txw2</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- javax.activation -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<!-- wsimport -->
<dependency>
<groupId>com.Sun.xml.ws</groupId>
<artifactId>jaxws-tools</artifactId>
<version>2.3.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated-sources/wsimport</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>