هل هناك حاجة إلى نوع التغليف "بوم" عند عدم استخدام تجميع المشروع (متعدد الموديل)؟
-
25-09-2019 - |
سؤال
أريد أن أرث تبعيات (الوالد) pom.xml
في مشروع الطفل في Maven 2.2.1 ؛ أي استخدام ميراث المشروع. يبدو أنه من الضروري تغيير نوع التغليف الافتراضي من jar
إلى pom
في هذه الحالة.
ومع ذلك ، لا وثائق Maven2 اذكر أن نوع العبوة pom
من الضروري لتجميع المشروع ، أي مشاريع موزعة متعددة تستخدم العارض الفرعي ، ولكن ليس لميراث المشروع؟
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>example</groupId>
<artifactId>example-parent</artifactId>
<version>1</version>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
</dependencies>
</project>
<project>
<parent>
<groupId>example</groupId>
<artifactId>example-parent</artifactId>
<version>1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>example</groupId>
<artifactId>example-child</artifactId>
</project>
ولكن إذا اتصلت بـ Maven (على سبيل المثال mvn clean
) مع التكوين أعلاه ، ستحصل على خطأ:
Project ID: example:example-child
Reason: Parent: example:example-parent:jar:1
of project: example:example-child has wrong packaging: jar.
Must be 'pom'. for project example:example-child
من ناحية أخرى ، مع الإدخال التالي:
<project>
...
<packaging>pom</packaging>
...
</project>
في الوالد pom.xml
, ، يمكن تنفيذ Maven دون أي خطأ.
هل هذا سلوك Maven صحيح؟
نصائح أخرى
إذا كنت ترغب فقط في وراثة تبعيات ، فلا أعتقد أنه يجب أن يكون كتابة "بوم". يمكن أن يكون لديك جرة وببساطة تحديدها على أنها تبعية للمشروع الذي لديك كطفل. ومع ذلك ، لن يكون لديك علاقة الوالد/الطفل وهو ما يمنع أن يكون مشروع الوالدين نوعًا غير "بوم".
لكي تكون واضحًا ، ترث تبعيات جميع تبعياتك (التبعيات المتعدية).
كما لاحظ باسكال ، السلوك صحيح.
إذا كنت لا تزال تبحث عن وسائل لمشاركة التبعيات بين الوحدات النمطية ، فيمكنك التفكير في تجميع التبعيات المعنية في POM ، ثم يعتمد وحداتك على تلك التبعيات الجديدة.
نرى قسم كتاب مافن 3.6.1 لمزيد من التفاصيل.