Maven JAXB2 XJC插件:未涵盖M2E插件执行

Jea*_*art 11 java jaxb xjc maven maven-jaxb2-plugin

我正在使用jaxb2 xjc插件从a生成java文件XSD.因此,我曾经按如下方式配置我的pom.xml:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxb2-maven-plugin</artifactId>
            <version>1.3</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>xjc</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <packageName>com.mypackage.model</packageName>
                <schemaDirectory>${basedir}/src/main/resources/XSD</schemaDirectory>
            </configuration>
        </plugin>
        <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <configuration>
               <source>1.6</source>
               <target>1.6</target>
           </configuration>
       </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

我将我的开发环境改为Eclipse Indigo,这不再适用了.错误说:"生命周期配置未涵盖插件执行".我知道我必须以不同的方式定义我的插件的执行,以便它在我的新环境中工作.

我按照本页上的说明M2E插件执行未涵盖但执行generate-sources阶段时未生成源文件.

任何人都可以告诉我如何精确重构我的pom,以便我的文件正确生成?

谢谢你的帮助!

Ste*_*ins 15

事实证明,我终于找到答案!Eclipse与Maven的集成已经知道许多Maven插件的兼容性问题.

如果您可以从Eclipse外部的命令行成功运行Maven构建,但Eclipse在POM中显示"执行未涵盖"错误,请尝试添加此插件:

<build>
    ...
    <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.codehaus.mojo</groupId>
                                    <artifactId>jaxb2-maven-plugin</artifactId>
                                    <versionRange>[1.3,)</versionRange>
                                    <goals>
                                        <goal>xjc</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <execute />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>
Run Code Online (Sandbox Code Playgroud)

如上面的注释所示,这个插件在Eclipse之外没有做任何事情.它只是告诉Eclipse何时执行JAXB插件,因为Eclipse不够智能,无法自行解决.

我在另一个StackOverflow问题上找到了这个片段,并将其采用到了"jaxb2-maven-plugin"插件,而不是另一个问题中的插件问题.