هل هناك حاجة إلى نوع التغليف "بوم" عند عدم استخدام تجميع المشروع (متعدد الموديل)؟

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

سؤال

أريد أن أرث تبعيات (الوالد) 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 إلى عن على الأبوين و تجميع (متعددة الوحدات) المشاريع.

لذا فإن سلوك Maven يبدو صحيحًا بالنسبة لي (ورسالة الخطأ هي توضيح ذاتي بشكل جيد).

نصائح أخرى

إذا كنت ترغب فقط في وراثة تبعيات ، فلا أعتقد أنه يجب أن يكون كتابة "بوم". يمكن أن يكون لديك جرة وببساطة تحديدها على أنها تبعية للمشروع الذي لديك كطفل. ومع ذلك ، لن يكون لديك علاقة الوالد/الطفل وهو ما يمنع أن يكون مشروع الوالدين نوعًا غير "بوم".

لكي تكون واضحًا ، ترث تبعيات جميع تبعياتك (التبعيات المتعدية).

كما لاحظ باسكال ، السلوك صحيح.

إذا كنت لا تزال تبحث عن وسائل لمشاركة التبعيات بين الوحدات النمطية ، فيمكنك التفكير في تجميع التبعيات المعنية في POM ، ثم يعتمد وحداتك على تلك التبعيات الجديدة.

نرى قسم كتاب مافن 3.6.1 لمزيد من التفاصيل.

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