Maven 2 Maven警告“覆盖配置文件:'null'…”

Maven 2 Maven警告“覆盖配置文件:'null'…”,maven-2,warnings,profile,pom.xml,Maven 2,Warnings,Profile,Pom.xml,以下maven警告的可能原因是什么: Overriding profile: 'null' (source: pom) with new instance from source: pom 我已经试着注释掉我的整个默认配置文件,因为警告中提到了配置文件,但是没有帮助。我也尝试过对我的报告选项进行评论,但警告仍然出现 我已经用-X标志运行了maven,在引入hamcrest依赖项后,警告立即出现,但是注释它并不能消除警告 编辑:每个请求的附加信息: mvn帮助的输出:活动配置文件: <

以下maven警告的可能原因是什么:

Overriding profile: 'null' (source: pom) with new instance from source: pom
我已经试着注释掉我的整个默认配置文件,因为警告中提到了配置文件,但是没有帮助。我也尝试过对我的报告选项进行评论,但警告仍然出现

我已经用-X标志运行了maven,在引入hamcrest依赖项后,警告立即出现,但是注释它并不能消除警告

编辑:每个请求的附加信息:

mvn帮助的输出:活动配置文件:

   <profile>
        <activation>
            <os>
                <family>windows</family>
                <arch>x86</arch>
            </os>
        </activation>
        <dependencies>
            <dependency>
                <groupId>org.eclipse.swt.win32.win32</groupId>
                <artifactId>x86</artifactId>
                <version>3.3.0-v3346</version>
                <optional>true</optional>
            </dependency>
        </dependencies>
    </profile>
mvn帮助的输出:所有配置文件:

   <profile>
        <activation>
            <os>
                <family>windows</family>
                <arch>x86</arch>
            </os>
        </activation>
        <dependencies>
            <dependency>
                <groupId>org.eclipse.swt.win32.win32</groupId>
                <artifactId>x86</artifactId>
                <version>3.3.0-v3346</version>
                <optional>true</optional>
            </dependency>
        </dependencies>
    </profile>
默认值实际上是我在pom中使用的配置文件的id。在这一点上,我只有一个配置文件,尽管我希望在将来添加更多

决议:

彼得在这个问题上是对的。问题源于maven概要文件中没有id元素。在我的例子中,由于我的miglayout依赖关系,一个pom文件被拉入

通过查看相关pom,我发现miglayout在其配置文件中确实没有使用id:

   <profile>
        <activation>
            <os>
                <family>windows</family>
                <arch>x86</arch>
            </os>
        </activation>
        <dependencies>
            <dependency>
                <groupId>org.eclipse.swt.win32.win32</groupId>
                <artifactId>x86</artifactId>
                <version>3.3.0-v3346</version>
                <optional>true</optional>
            </dependency>
        </dependencies>
    </profile>

还有许多其他配置文件也缺少id,每个配置文件都会导致出现警告。

这很容易在Maven 2.2.9中重现。唯一的原因是在同一pom.xml中定义了两个maven概要文件,但没有profile id元素,因此这些id被视为null。我不知道这样一个概要文件的用例是什么,但是Maven 2.2.9默默地允许这样一个概要文件存在,当然,除非您试图覆盖它——您会收到上面提到的警告

下面是一个简单的pom,它将重现错误。请注意每个概要文件缺少的元素

<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.apache.maven.its.mngxxxx</groupId> <artifactId>parent</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <name>parent</name> <profiles> <profile> <activation> <property><name>foo</name></property> </activation> </profile> <profile> <activation> <property><name>foo</name></property> </activation> </profile> </profiles> </project> 还请注意,缺少的将导致Maven 3应用“默认”配置文件id


最后,在多模块构建中,如果父pom定义的配置文件与子pom中的配置文件具有相同的id,则Maven不会发出警告或其他指示。

这很容易在Maven 2.2.9中重现。唯一的原因是在同一pom.xml中定义了两个maven概要文件,但没有profile id元素,因此这些id被视为null。我不知道这样一个概要文件的用例是什么,但是Maven 2.2.9默默地允许这样一个概要文件存在,当然,除非您试图覆盖它——您会收到上面提到的警告

下面是一个简单的pom,它将重现错误。请注意每个概要文件缺少的元素

<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.apache.maven.its.mngxxxx</groupId> <artifactId>parent</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <name>parent</name> <profiles> <profile> <activation> <property><name>foo</name></property> </activation> </profile> <profile> <activation> <property><name>foo</name></property> </activation> </profile> </profiles> </project> 还请注意,缺少的将导致Maven 3应用“默认”配置文件id

最后,在多模块构建中,如果父pom定义的概要文件与子pom中的概要文件具有相同的id,则Maven不会发出警告或其他指示