سؤال

ما هي الأسباب المحتملة للتحذير المخضرم التالي:

Overriding profile: 'null' (source: pom) with new instance from source: pom

لقد حاولت التعليق على ملفي الشخصي الافتراضي بالكامل حيث يشير التحذير إلى "الملف الشخصي"، لكن ذلك لم يساعد.لقد حاولت أيضًا التعليق على خيارات إعداد التقارير الخاصة بي ولا يزال التحذير يظهر.

لقد قمت بتشغيل مخضرم مع -X يظهر العلم والتحذير فورًا بعد إحضار تبعية hamcrest الخاصة بي، لكن التعليق عليه لا يلغي التحذير.

يحرر: معلومات إضافية لكل طلب:

الإخراج من mvn help:active-profiles:

Active Profiles for Project 'com.sophware.XXX:main:jar:0.0.1-SNAPSHOT':

The following profiles are active:

 - default (source: pom)

الإخراج من mvn help:all-profiles:

[INFO] Listing Profiles for Project: com.sophware.XXX:main:jar:0.0.1-SNAPSHOT
  Profile Id: default (Active: true , Source: pom)

default هو بالفعل معرف الملف الشخصي الذي أستخدمه في ملف pom الخاص بي.في هذه المرحلة، لدي ملف تعريف واحد فقط، على الرغم من أنني أتوقع إضافة المزيد في المستقبل.

دقة:

لقد كان بيتر على حق بشأن هذه المشكلة.المشكلة تنبع من عدم وجود id عنصر داخل ملف تعريف مخضرم.في حالتي، تم سحب ملف pom بسبب تبعية miglayout الخاصة بي.

عند البحث في بوم التابع، وجدت أن 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's كذلك، كل منها يتسبب في وجود التحذير.

هل كانت مفيدة؟

المحلول

من السهل إعادة إنتاج هذا في Maven 2.2.9.السبب الوحيد لذلك هو أنه تم تعريف ملفين شخصيين مخضرمين بدون عنصر معرف الملف الشخصي في نفس pom.xml، وبالتالي يتم التعامل مع المعرفات على أنها فارغة.لا أعرف ما هي حالة الاستخدام لمثل هذا الملف الشخصي، لكن Maven 2.2.9 يسمح بصمت بوجود مثل هذا الملف الشخصي، إلا إذا حاولت تجاوزه بالطبع - فستحصل على التحذير المذكور.

هنا بوم بسيط من شأنه أن يعيد إنتاج الخطأ.لاحظ المفقودين <id> عنصر لكل ملف تعريف.

<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>

ببساطة اكتب mvn -X validate -Dfoo=true ويجب أن تشاهد بالقرب من الجزء العلوي من الإخراج رسالة التحذير.يحدث هذا بسبب محاولة تعريف ملف التعريف الثاني تجاوز الأول.

الكود ذو الصلة في Maven 2 الذي يصدر هذا التحذير موجود DefaultProfileManager.java السطر 123.


لقد تغير هذا في Maven 3.باستخدام أحدث إصدار من maven 3.0-alpha-6 الذي تحصل عليه.

[ERROR] The build could not read 1 project -> [Help 1]
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[ERROR] profiles.profile.id must be unique but found duplicate profile with id default @ org.apache.maven.its.mngxxxx:parent:1.0-SNAPSHOT, /Users/plynch/dev/apache/maven/core-integration-testing/mytests/mng-xxxx-IT/src/test/resources/mng-xxxx/pom.xml

 at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:285)
 at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:402)
 at org.apache.maven.DefaultMaven.getProjectsForMavenReactor(DefaultMaven.java:351)
 at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:171)
 at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:104)
 at org.apache.maven.cli.MavenCli.execute(MavenCli.java:422)
 at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:157)
 at org.apache.maven.cli.MavenCli.main(MavenCli.java:122)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:592)
 at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
 at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
 at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
 at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
[ERROR]   The project org.apache.maven.its.mngxxxx:parent:1.0-SNAPSHOT (/Users/plynch/dev/apache/maven/core-integration-testing/mytests/mng-xxxx-IT/src/test/resources/mng-xxxx/pom.xml) has 1 error
[ERROR]     profiles.profile.id must be unique but found duplicate profile with id default
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException

لاحظ أيضا أن المفقودين <id> سيؤدي إلى قيام Maven 3 بتطبيق معرف ملف التعريف "الافتراضي".


أخيرًا، في البناء متعدد الوحدات، إذا قام أحد الوالدين بتحديد ملف تعريف بنفس المعرف الموجود في الطفل، فلا يوجد تحذير أو إشارة أخرى منبعثة من Maven.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top