Újabb WS Project Eclipse-ben mavennal
2009. December 9.
I. Maven plugin Eclipse-hez: Én az m2eclipse plugint installáltam (http://m2eclipse.sonatype.org/)
II. Új Project: Hozzunk létre új Maven Projectet eclipse-ben:



- src/main/java: Csak a forráskódnak amit írunk.
- src/main/resources: Minden más resource (Nálunk pl.: a WSDL file és a konfig fileok is).
- src/test/java: JUnit tesztek
- src/resources: a tesztekhez szükséges resource-ok, amik nem lesznek deployolva…
- target: a fordítás eredménye kerül ide. (+ a resource fileok is)
III: Project Object Model: A pom.xml file irja le a teljes projectet. Szemben az ant-tal, ahol a build.xml file leírja a definiált projectünk elemein végzendő műveleteket (dependent lib-eket tesz a classpathra, fordít, könyvtárat hoz létre, jar/war file-t készít, deployol, stb.), a maven pom.xml-je a project gerincét adja. Itt határozzuk meg a project függőségeit, a pluginokat amelyeket a build sorén használni szeretnénk, a repository-kat amelyekből a különböző lib-eket letölti a Maven.
A Maven Project életciklusai:
- generate sources: pl.: A mi esetünkben a wsdl fileból generál Java forráskódot.
- compile: A forráskód fordítása.
- test-compile: A JUnit tesztek fordítása.
- test: A JUnit tesztek futtatása.
- package: jar, war stb.
- integration-test:deployol az staging environmentre ha szükséges.
- install:belepakolja a local repository-ba az elkészült jar/war filet, ha más projectek ezen dependálnak.
- deploy: production environmentre másolja fel a végleges verziót.
A mi pom xml fileunk a következőképpen néz ki:
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>GAAuthWSTest</groupId> <artifactId>GAAuthWSTest</artifactId> <version>0.0.1-SNAPSHOT</version> </project>

<dependencies>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.1.3</version>
</dependency>
</dependencies>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</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>src/main/java</source> <source>src/main/generated</source> <source>src/main/resources</source> <source>src/test/java</source> </sources> </configuration> </execution> </executions> </plugin>
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxws-maven-plugin</artifactId> <executions> <execution> <goals> <goal>wsimport</goal> </goals> </execution> </executions> <configuration> <wsdlUrls> <wsdlUrl>src/main/resources/AuthWService.wsdl</wsdlUrl> </wsdlUrls> <sourceDestDir>src/main/generated</sourceDestDir> <packageName>com.wk.auth.ws</packageName> </configuration> </plugin>
VII. Hibák, amikbe belefutottam:
-
Java verzió:A Java 1.6 update 4 előtti változatai a JAX-WS 2.0-át használják. Én a mavennel viszont a 2.1.3-as verziót töltöttem le. Probléma nem is látszott egészen addíg, amíg az Eclipse-ből nem akartam futtatni közvetlenül egy tesztet. Mivel ekkor az eclipse-ben beállított sun-os rt.jar-t kezdte használni a program, a maven által letöltött jaxws-rt.jar helyett. Java update-vel megoldódott.
-
RPC/Encoded wsdl file: Nincs rá megoldás. A JAX-WS nem támogatja…

