0

使用来自 WSDL 的 maven cxf 插件 cxf-codegen-plugin java 工件。但是 javacode 没有填充到 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>

这是我的文件夹结构。

在此处输入图像描述

4

2 回答 2

0

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

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

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

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

于 2014-12-14T21:55:55.717 回答
0

CXF 插件的最新版本(与过去几年的所有版本一样)内置了 M2E 生命周期内容。升级到 2.7.14 或 3.0.3,您的许多问题都会得到解决。(以及大量其他错误和安全问题)

于 2014-12-15T17:39:14.663 回答