 ------
 Maven 2 Java2WSDL Plugin: configuration examples
 ------
 Jochen Wiedmann 
 <jochen.wiedmann@gmail.com>
 ------

Goals

  The Java2WSDL plugin offers a single goal:

   * java2wsdl (default): Reads a java class and generates a WSDL for invoking the classes methods as a web service.

  To run the plugin, add the following section to your POM:

------------------------
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.axis2.maven2</groupId>
        <artifactId>axis2-java2wsdl-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>java2wsdl</goal>
            </goals>
          </execution>
          <configuration>
            <className>com.foo.myservice.MyHandler</className>
          </configuration>
        </executions>
      </plugin>
    </plugins>
  </build>
------------------------

  The plugin will be invoked automatically in the generate-resources
  phase. You can also invoke it directly from the command line by
  running the command

+--------
  mvn java2wsdl:java2wsdl
+---------


The Java2WSDL Goal

  By default, the plugin reads the given Java class and creates a
  file <<<target/generated-resources/java2wsdl/service.xml>>>. The
  Java class is given by the configuration element <<<className>>>
  above.

  See the detailed documentation on {{{configuration.html}properties}} for
  how to configure the goal.
