gpt4 book ai didi

eclipse - 在 Eclipse 中验证 pom.xml 时出现 FailOnMissingWebXml 错误

转载 作者:行者123 更新时间:2023-12-03 23:16:39 24 4
gpt4 key购买 nike

编译 Maven 项目时,我在 pom.xml 的验证阶段收到此错误.这是一个相当大的项目,具有复杂的构建过程。该项目仅包含 JavaScript 代码,无需编译成 war .我正在寻找一种方法:

  • 只需通过禁用 failOnMissingWebXml 来禁用错误(这似乎是一个非严重的 Eclipse 错误)
  • 在 Eclipse 中找到防止此验证错误的解决方案(相关问题的答案)
    问题不适用于我的特定场景)

  • 完整的错误:
    Description Resource    Path    Location    Type web.xml is missing 
    and <failOnMissingWebXml> is set to true pom.xml /testproject line 6
    Maven Java EE Configuration Problem

    单击错误后,问题似乎出在 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>com.scs</groupId>
    <artifactId>scs-control-panel</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging> **THE ERROR POINTS TO THIS LINE**

    <parent>
    <groupId>com.scs</groupId>
    <artifactId>scs</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../scs</relativePath>
    </parent>

    <build>
    </build>

    <dependencies>
    </dependencies>

    </project>

    不确定这是 Eclipse 还是 Maven 错误,但可能是 Eclipse,因为 Maven 通过命令行顺利运行。这也可能是 Eclipse 中的一个错误,我正在运行 Eclipse Java EE IDE for Web Developers 版本:Mars.1 Release (4.5.1)。

    UPDATE1:我尝试在 Eclipse 中更新项目,但没有区别。

    UPDATE2:我尝试从 war 更改包类型至 pom但没有区别。

    最佳答案

    Maven 中的一切都围绕着插件。插件是在构建过程中执行某些行为的程序。某些插件包含是隐含的,我们无需声明任何内容。
    这些隐含的插件具有默认配置。例如,maven-compiler-plugin包含在所有项目中而无需声明。要覆盖默认配置,我们需要在 pom.xml 文件中声明插件并设置配置。例如,您会看到很多项目覆盖了 maven-compiler-plugin 上的默认版本。这是sourcetarget设置为 Java 1.5。我们可以改成1.8

    <build>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
    <source>1.8</source>
    <target>1.8</target>
    </configuration>
    </plugin>
    </plugins>
    </build>
    这只是插件背后的一些理论,让您了解正在发生的事情。
    话虽如此,为了使用 <packaging>war<packaging> , maven-war-plugin无需我们声明任何内容即可使用。就像使用 <packaging>jar</packaging> 时一样, maven-jar-plugin的包含是隐含的。 maven-war-plugin 的默认配置是在没有 web.xml 的地方失败(该配置属性是 failOnMissingWebXml )。所以如果我们想覆盖这个默认值,我们需要声明插件,然后将属性的值设置为false(不会失败)
    <build>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
    <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
    </plugin>
    </plugins>
    </build>

    更新
    war 插件现在允许您只使用它将查找的属性。这允许您简单地声明属性而不必覆盖插件。要添加此属性,您只需添加属性 failOnMissingWebXml项目的值为 false <properties>
    <properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
    </properties>
    只需添加这个,如果你没有进一步的配置需要添加到编译器插件中,你将不再需要在你的 pom.xml 中覆盖和声明编译器插件。

    更新 2
    所以如果你声明 maven-war-plugin并使用 <version> 3.0.0+,没有web.xml失败的默认设置为false,所以我们不再需要覆盖配置属性,尽管我们仍然需要声明插件。

    关于eclipse - 在 Eclipse 中验证 pom.xml 时出现 FailOnMissingWebXml 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33530105/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com