Maven的JAXB2 XJC插件:插件M2E执行不包括(Maven JAXB2 XJC plugi

2019-07-29 05:02发布

我使用使用jaxb2 xjc插件从生成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>

我改变了我的开发环境Eclipse的靛蓝,这不起作用了。 错误说:“未涵盖的生命周期配置的插件执行”。 我明白我必须定义不同的我的插件的执行,以便它在我的新环境。

我跟着这个页面的说明不是盖的M2E插件运行 ,但源文件不执行时产生的generate-sources的阶段。

任何人可以告诉我如何准确重构我的聚甲醛,使我的文件是否正确产生?

感谢您的帮助!

Answer 1:

事实证明,我终于找到答案! Eclipse的Maven的一体化已知的兼容性问题与众多的Maven插件。

当你可以成功运行一个Maven从Eclipse之外的命令行构建,但但是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>

如上评论指出,这个插件没有做的Eclipse以外的任何东西。 它简单地告诉Eclipse时要执行的JAXB的插件,因为Eclipse是没有足够的智慧去弄清楚自身。

我发现这个片段另一个StackOverflow的问题 ,并且它通过了“JAXB2 - Maven的插件”插件,而不是在问题的另一问题的插件。



Answer 2:

你也可以切换到maven-jaxb2-plugin具有在M2E支持。 上述史蒂夫帕金斯的回答是普遍适用于那些M2E不支持插件,虽然。



Answer 3:

我不知道这是否适用于您的环境,但如果应用程序被分成Maven的模块那么最好的解决方案配合我的需求,我发现到目前为止是从Eclipse IDE中删除所有受影响的模块。 每当我需要重新生成我只是从命令行建立与MVN安装。 然后Eclipse是使用包从回购,而不是试图建立其自己的,没有runOnIncremental小提琴,各地需要(我用了相当长的一段时间,这),无红模块/线,构建速度更快了。



文章来源: Maven JAXB2 XJC plugin: M2E plugin execution not covered