تحذير من استخدام project.parent.version كنسخة من الوحدة النمطية في Maven 3

StackOverflow https://stackoverflow.com/questions/1981151

  •  22-09-2019
  •  | 
  •  

سؤال

في مشاريع Maven Multi-module حيث أريد أن تحتفظ كل وحدة من الوحدات النمطية دائمًا بنفس الإصدار مثل الوالد ، قمت عادةً بعمل شيء مثل ما يلي في الوحدة النمطية pom.xml:

  <parent>
    <groupId>com.groupId</groupId>
    <artifactId>parentArtifactId</artifactId>
    <version>1.1-SNAPSHOT</version>
  </parent>

  <groupId>com.groupId</groupId>
  <artifactId>artifactId</artifactId>
  <packaging>jar</packaging>
  <version>${project.parent.version}</version>
  <name>name</name>

منذ أن بدأت في استخدام Maven 3.0-alpha-5 ، أحصل على التحذير التالي للقيام بذلك.

[WARNING] 
[WARNING] Some problems were encountered while building the effective model for com.groupid.artifactId:name:jar:1.1-SNAPSHOT
[WARNING] 'version' contains an expression but should be a constant. @ com.groupid.artifactId:name::${project.parent.version}, /Users/whaley/path/to/project/child/pom.xml
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]

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

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

المحلول

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

حسنًا ، سيكون من السهل اختباره. لأنني كنت فضوليًا ، لقد فعلت ذلك من أجلك باستخدام POM التالي:

<project>
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>parent</artifactId>
    <groupId>com.mycompany</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <groupId>com.mycompany</groupId>
  <artifactId>module</artifactId>
  <version>${myversion}</version>
  <name>module</name>
  <url>http://maven.apache.org</url>
  <properties>
    <myversion>1.0-SNAPSHOT</myversion>
  </properties>
  ...
</project>

ومافن يشكو بالفعل:

[WARNING] 'version' contains an expression but should be a constant. @ com.mycompany:module:${myversion}, /home/pascal/Projects/maven-maven3-testcase/module/pom.xml

لأكون صادقًا ، أعتقد أن Maven موجود هنا ، فليس من المنطقي استخدام خاصية لـ <version> العنصر (على الأقل ليس للمشروع. إنجاب) ومن الجيد أن يكون Maven يشكو من ذلك.

وإذا كنت ترغب في استخدام إصدار POM الأصل في الوحدات الفرعية ، فقط إزالة <version> علامة من بومس الطفل, ، سوف يرثون الإصدار من الوالد. ما تفعله حاليًا غير ضروري.

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