使用来自WSDL的maven cxf插件cxf-codegen-plugin java工件

时间:2014-12-12 09:53:46

标签: maven cxf cxf-codegen-plugin

使用来自WSDL的maven cxf插件cxf-codegen-plugin java工件。但是javacodes没有在eclipse IDE中填充。

我是否需要指定任何其他标签来获取eclipse项目中的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>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>

这是我的文件夹结构。

enter image description here

2 个答案:

答案 0 :(得分:0)

您需要生成源代码,然后让Eclipse知道它们的来源。

  1. 第一步是通过右键单击顶级项目并选择“Run As”→“Maven generate-sources”来完成。这应该在项目的target/generated-sources目录下构建它们。

  2. 第二步是通过右键单击顶级项目并选择“Maven”→“更新项目...”来完成的。然后,您需要确保在对话框中选择了项目;这可能是微不足道的(我在Eclipse中打开了很多项目,但是你的项目可能更简单)。 需要在对话框中打开的选项是“从pom.xml更新项目配置”,尽管其他所有内容的一般更新不应该是有害的。

  3. 每次更新源WSDL时,都可能需要重做此操作。在实践中,它只需要几秒钟,所以它不是很繁重。

答案 1 :(得分:0)

CXF插件的最新版本(如在过去几年的所有版本中)都内置了M2E生命周期内容。升级到2.7.14或3.0.3并解决了很多问题。 (以及其他一些错误和安全问题)