「mvn generate-sources」を実行しようとすると、これが私の出力です。
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building gensourcesfromwsdl 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.104s
[INFO] Finished at: Tue Aug 20 15:41:10 BST 2013
[INFO] Final Memory: 2M/15M
[INFO] ------------------------------------------------------------------------
エラーは表示されませんが、wsdlファイルから生成されるJavaクラスはありません。
プラグインを実行しているpom.xmlファイルは次のとおりです。
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>gensourcesfromwsdl</groupId>
<artifactId>gensourcesfromwsdl</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>1.12</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlLocation>http://mysite/firstwsdl.asmx?wsdl</wsdlLocation>
<packageName>com</packageName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
私は何を間違えていますか?パッケージcom
はプロジェクト 'gensourcesfromwsdl'に存在し、wsdlの場所は有効です。
コマンドラインでwsimport
を実行すると:> wsimport -keep -verbose http://mysite/firstwsdl.asmx?wsdl
クラスが生成されます。
WSDLからクラスを生成するために必要なのは、pom.xmlのbuild-helper-maven-pluginおよびjaxws-maven-pluginです
wsrcをフォルダーsrc/main/resources/wsdlおよびsrc/main/resources/schemaの対応するスキーマの下に配置したことを確認し、プロジェクトルートディレクトリからコマンド「mvn generate-sources」を実行します。
C:/Project root directory > mvn generate-sources
生成されたJavaクラスはフォルダの下に配置できます
target/generated/src/main/Java/com/raps/code/generate/ws.
pom.xmlスニペット
<basedir>
C:/Project root directory
</basedir>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${basedir}/target/generated/src/main/Java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>1.12</version>
<configuration>
<wsdlDirectory>${basedir}/src/main/resources/wsdl</wsdlDirectory>
<packageName>com.raps.code.generate.ws</packageName>
<keep>true</keep>
<sourceDestDir>${basedir}/target/generated/src/main/Java</sourceDestDir>
</configuration>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
</execution>
</executions>
</plugin>
URLまたはファイルの場所(wsdlファイルの場所はコメント化されています)からjaxws mavenプラグインを使用してwsdlからクラスを生成する方法の例を次に示します。
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<build>
<plugins>
<!-- usage of jax-ws maven plugin-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>1.12</version>
<executions>
<execution>
<id>wsimport-from-jdk</id>
<goals>
<goal>wsimport</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- using wsdl from an url -->
<wsdlUrls>
<wsdlUrl>
http://myWSDLurl?wsdl
</wsdlUrl>
</wsdlUrls>
<!-- or using wsdls file directory -->
<!-- <wsdlDirectory>src/wsdl</wsdlDirectory> -->
<!-- which wsdl file -->
<!-- <wsdlFiles> -->
<!-- <wsdlFile>myWSDL.wsdl</wsdlFile> -->
<!--</wsdlFiles> -->
<!-- Keep generated files -->
<keep>true</keep>
<!-- Package name -->
<packageName>com.organization.name</packageName>
<!-- generated source files destination-->
<sourceDestDir>target/generatedclasses</sourceDestDir>
</configuration>
</plugin>
</plugins>
</build>
これは少し遅い応答ですが、誰かに役立つかもしれません。 pluginManagementを使用したように見えます。 pluginManagementを使用する場合、プラグインの実行は選択されません。
下にあるはずです
<build>
<plugins>
<plugin>
WsdlUrlsでwsdlLocationをラップしてみてください
<wsdlUrls>
<wsdlLocation>http://url</wsdlLocation>
</wsdlUrls>
Jaxws-maven-pluginを介してターゲットにソースを生成し、build-helper-maven-pluginを介してこのクラスをソースで表示することを好む人もいます。この構造の引数として
バージョン管理システム(svn/etc。)は常にソースの変更に気づくでしょう
Gitでは、それは正しくありません。したがって、単にjaxws-maven-plugin
をソースに入れますが、ターゲットフォルダの下には入れません。次回プロジェクトをビルドするとき、gitはこれらの生成されたファイルを変更済みとしてマークしません。プラグインが1つだけの簡単なソリューションを次に示します。
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3</version>
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-fluent-api</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>com.Sun.xml.ws</groupId>
<artifactId>jaxws-tools</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<packageName>som.path.generated</packageName>
<xjcArgs>
<xjcArg>-Xfluent-api</xjcArg>
</xjcArgs>
<verbose>true</verbose>
<keep>true</keep> <!--used by default-->
<sourceDestDir>${project.build.sourceDirectory}</sourceDestDir>
<wsdlDirectory>src/main/resources/META-INF/wsdl</wsdlDirectory>
</configuration>
</execution>
</executions>
</plugin>
また、この例では(注意するために)SOAPクラスはFluent APIで生成されるため、次のように作成できます。
A a = new A()
.withField1(value1)
.withField2(value2);
ここで重要なのは、wsimportのkeepオプションです。そして、それはwsimportドキュメントのkeepについての要素を使用して設定されます:
-keep keep generated files
私はwsimportゴールからクラスを生成しているときに同じ問題を抱えていました。 Eclipse Maven Build iでjaxws:wsimportゴールを使用する代わりに、wsdlファイルからコードを生成できなかったクリーンコンパイルインストールを使用していました。上記の例に感謝します。 Eclipse IDEからjaxws:wsimportゴールを実行すると動作します