使用父pom中的pluginManagement在eclipse中生命周期配置错误未涵盖插件执行

wou*_*non 19 java eclipse maven

我在pluginManagement标签中的父pom.xml中有jaxws-maven-plugin,我指的是这个插件在pom中.

mvn clean install运行正常.但是,eclipse抱怨"生命周期配置未涵盖插件执行:org.codehaus.mojo:jaxws-maven-plugin:1.12:wsimport(执行:FirstWsdl,阶段:生成源)".

你能建议如何在eclipse中避免这个错误吗?

父母pom

<pluginManagement>
    <plugins>
    ...
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxws-maven-plugin</artifactId>
        <version>1.12</version>
        <executions>
            <execution>
                <id>FirstWsdl</id>
                <goals>
                    <goal>wsimport</goal>
                </goals>
                <phase>generate-sources</phase>
                <configuration>
                    <wsdlLocation>location/file.wsdl</wsdlLocation>
                    <wsdlFiles>
                        <wsdlFile>file.wsdl</wsdlFile>
                    </wsdlFiles>
                    <packageName>com.xxx.package</packageName>
                </configuration>
            </execution>

        </executions>
        <configuration>
            <sourceDestDir>${basedir}/generated</sourceDestDir>
            <verbose>true</verbose>
            <extension>true</extension>
            <keep>true</keep>
            <vmArgs>
                <vmArg .../>
            </vmArgs>
        </configuration>

    </plugin>
...
   </plugins>
</pluginManagement>   
Run Code Online (Sandbox Code Playgroud)

孩子pom

<plugins>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxws-maven-plugin</artifactId>
    </plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)

我查看了这个问题,并回答如何解决Spring Data Maven Builds的"生命周期配置未涵盖的插件执行",但是,我应该在父和子pom中使用pluginManagement来避免此错误吗?

Von*_*onC 21

这应该是:

  • 维基页面中记录的" M2E插件执行未涵盖 ":

    项目构建生命周期映射可以在项目中配置pom.xml,由Eclipse插件提供,或者默认为m2e附带的常用Maven插件.
    我们将这些称为" 生命周期映射元数据源 ".
    m2e将为所有在任何映射元数据源中没有生命周期映射的插件执行创建如下所示的错误标记.

  • " 如何解决"插件执行中未说明的 "生成周期配置"(适用于Spring Data Maven Builds)(您参考).

    • 通过在父pom中添加lifecycleMappingMetadata.
    • 或者用插头封装插件<pluginManagement>(在两个pom中).

该线程为您的特定错误消息添加了更多详细信息:

当在"Maven" - >"Lifecyle Mapping"下查看项目属性中的Eclipse-UI时(选中"显示生命周期阶段"复选框并禁用"显示忽略的执行"),我看到以下内容.
据我所知,这个文件显示了Eclipse构建生命周期(运行时/增量)与其绑定的Maven插件之间的映射.
目前,它不包含" jax-ws"插件分别是其目标" wsimport".

问题是您jax-ws在该pluginManagement部分中声明了插件.
要获得绑定到阶段,它应该在build/plugins中.
从CLI执行Maven构建也不起作用,所以我怀疑你没有做标准的"mvn install"?

要从Eclispe内部执行Maven执行工作,您无需执行任何操作.
但是如果你想在IDE中获得增量/运行时支持,你应该得到合适的m2e连接器.如果你在Eclipse中的POM编辑器中查看pom,插件执行应该用红色错误X标记.将鼠标悬停在它上面你应该找到一个选项("发现新的m2e连接器").


Daw*_*d D 20

如果你找不到连接器,你可以在eclipse中关闭这个错误,因为文档说:

要从Eclispe内部执行Maven执行工作,您无需执行任何操作.

所以转到Eclipse:Preferences -> Maven -> Error/Warnings并在选项中将Error更改为Warning:Plugin execution not converted by lifecycle configuration

  • 这是我找到的最简单的解决方案,谢谢。我认为这个答案应该被标记为正确答案。 (2认同)