Using maven cxf plugin cxf-codegen-plugin java artifacts from WSDL

9.7k views Asked by At

Using maven cxf plugin cxf-codegen-plugin java artifacts from WSDL. But the javacodes are not populating in the eclipse IDE.

Do I need to specify the any other tags to get the java source code in the eclipse project.

Below is my 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>SampleMavenPluginStubCreation</groupId>
  <artifactId>SampleMavenPluginStubCreation</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
   <build>
        <finalName>SampleMavenPluginStubCreation</finalName>
        <plugins>
            <!-- Generate Java classes from WSDL during build -->
            <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-codegen-plugin</artifactId>
                <version>2.1.2</version>
                <executions>
                    <execution>
                        <id>generate-sources</id>
                        <phase>generate-sources</phase>
                        <configuration>
                            <sourceRoot>${basedir}/src/main/java</sourceRoot>
                            <wsdlOptions>
                                <wsdlOption>
                                    <wsdl>${basedir}/src/wsdl/workorder.wsdl</wsdl>
                                    <extraargs>
                                        <extraarg>-client</extraarg>
                                    </extraargs>
                                </wsdlOption>
                            </wsdlOptions>
                        </configuration>
                        <goals>
                            <goal>wsdl2java</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>

        <pluginManagement>
            <plugins>
                <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>
                                            org.apache.cxf
                                        </groupId>
                                        <artifactId>
                                            cxf-codegen-plugin
                                        </artifactId>
                                        <versionRange>
                                            [2.1.2,)
                                        </versionRange>
                                        <goals>
                                            <goal>wsdl2java</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore></ignore>
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
                 <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </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>${project.build.directory}/generated-sources/java/</source>
                </sources>
            </configuration>
        </execution>
    </executions>
 </plugin>

            </plugins>
        </pluginManagement>
   </build>
</project>

This is my folder structure.

enter image description here

2

There are 2 answers

0
Donal Fellows On

You need to generate the sources and then get Eclipse to know where they came from.

  1. The first step is done by right-clicking on the top-level project and choosing “Run As” → “Maven generate-sources”. This should build them below the project's target/generated-sources directory.

  2. The second step is done by right-clicking on the top-level project and choosing “Maven” → “Update Project…”. You'll then need to make sure that the project is selected in the dialog; that might be trivial (I have rather a lot of projects open in my Eclipse, but yours may be simpler). The option that you need to have switched on in the dialog is “Update project configuration from pom.xml” though a general update of everything else shouldn't be harmful.

You may need to redo this every time you update the source WSDL. In practice, it only takes a few seconds, so it's not very onerous.

0
Daniel Kulp On

The recent versions (as in all releases in the last couple years) of the CXF plugins have the M2E lifecycle stuff built in. Upgrade to 2.7.14 or 3.0.3 and a lot of your issues would be fixed. (along with a TON of other bugs and security issues)