مدل Object Object یا POM واحد اساسی کار در Maven است. این یک فایل XML است که حاوی اطلاعاتی در مورد پروژه و جزئیات پیکربندی است که توسط Maven برای ساخت پروژه استفاده شده است. این شامل مقادیر پیش فرض برای اکثر پروژه ها است. نمونه هایی برای این کار دایرکتوری ساخت است که هدف آن است. فهرست منبع ، که SRC/Main/Java است. فهرست منبع آزمایش ، که SRC/TEST/JAVA است. و غیرههنگام اجرای یک کار یا هدف ، Maven به دنبال POM در فهرست فعلی است. این مقاله را می خواند ، اطلاعات پیکربندی مورد نیاز را دریافت می کند ، سپس هدف را اجرا می کند.
برخی از پیکربندی هایی که می توانند در POM مشخص شوند ، وابستگی پروژه ، افزونه ها یا اهدافی هستند که می توانند اجرا شوند ، پروفایل های ساخت و غیره. اطلاعات دیگری مانند نسخه پروژه ، توضیحات ، توسعه دهندگان ، لیست های پستی و مواردی از این دست نیز می تواند مشخص شود.
فوق العاده POM
Super POM پیش فرض پیش فرض Maven است. همه POM ها Super POM را گسترش می دهند مگر اینکه صریحاً تنظیم شود ، به معنای پیکربندی مشخص شده در Super POM توسط POM هایی که برای پروژه های خود ایجاد کرده اید به ارث می رسد.
می توانید Super POM را برای Maven 3. 6. 3 در مستندات مرجع اصلی Maven مشاهده کنید.
حداقل POM
حداقل نیاز به POM موارد زیر است:
- ریشه پروژه
- ModelVersion - باید روی 4. 0. 0 تنظیم شود
- GroupID - شناسه گروه پروژه.
- artifactid - شناسه مصنوعات (پروژه)
- نسخه - نسخه مصنوعات تحت گروه مشخص شده
در اینجا یک مثال وجود دارد:
POM مستلزم پیکربندی GroupID ، Artifactid و نسخه آن است. این سه ارزش نام مصنوعی کاملاً واجد شرایط پروژه را تشکیل می دهند. این به شکل :: است. در مورد مثال بالا ، نام آثار باستانی کاملاً واجد شرایط آن "com. mycompany. app:my-app:1" است.
همچنین ، همانطور که در بخش اول ذکر شد ، اگر جزئیات پیکربندی مشخص نشده باشد ، Maven از پیش فرض های آنها استفاده می کند. یکی از این مقادیر پیش فرض نوع بسته بندی است. هر پروژه Maven دارای نوع بسته بندی است. اگر در POM مشخص نشده باشد ، از مقدار پیش فرض "شیشه" استفاده می شود.
علاوه بر این ، می بینید که در حداقل POM مخازن مشخص نشده است. اگر پروژه خود را با استفاده از حداقل POM بسازید ، پیکربندی مخازن را در Super POM به ارث می برد. بنابراین وقتی Maven وابستگی ها را در حداقل POM مشاهده می کند ، می داند که این وابستگی ها از https://repo. maven. apache.org/maven2 که در Super POM مشخص شده است بارگیری می شود.
ارث
عناصر موجود در POM که ادغام شده اند به شرح زیر هستند:
- وابستگی ها
- توسعه دهندگان و همکاران
- لیست افزونه ها (از جمله گزارش ها)
- اعدام های افزونه با شناسه های مطابق
- پیکربندی پلاگین
- منابع
Super POM نمونه ای از وراثت پروژه است ، اما می توانید با مشخص کردن عنصر والدین در POM ، همانطور که در مثالهای زیر نشان داده شده است ، POM های والدین خود را نیز معرفی کنید.
مثال 1
سناریو
به عنوان نمونه ، اجازه دهید از آثار قبلی خود ، com. mycompany. app:my-app:1 استفاده مجدد کنیم. و بگذارید آثار دیگری را معرفی کنیم ، com. mycompany. app:my-module:1.
و اجازه دهید ساختار فهرست آنها را به صورت زیر مشخص کنیم:
توجه: My-Module/POM. xml Pom of Com. Mycompany. App:My-Module:1 در حالی که pom. xml pom com. mycompany. app:my-app:1 است
راه حل
حال ، اگر ما بخواهیم com. mycompany. app:my-app:1 را به مصنوعات والدین com. mycompany. app:my-module:1 ، ما باید تغییر دهیم. POM 1 به پیکربندی زیر:
com. mycompany. app:my-module:1's pom
توجه کنید که اکنون یک بخش اضافه شده ، بخش والدین داریم. این بخش به ما امکان می دهد مشخص کنیم که کدام یک از مصنوعات والدین POM ما هستند. و ما این کار را با مشخص کردن نام مصنوعی کاملاً واجد شرایط والدین POM انجام می دهیم. با این تنظیم ، ماژول ما اکنون می تواند برخی از خواص والدین ما را به ارث ببرد.
از طرف دیگر ، اگر می خواهید GroupID یا نسخه ماژول های خود همانند والدین آنها باشد ، می توانید GroupID یا هویت نسخه ماژول خود را در POM خود حذف کنید.
این به ماژول اجازه می دهد تا GroupID یا نسخه والدین خود را به ارث ببرد.
مثال 2
سناریو
با این حال ، اگر پروژه والدین قبلاً در مخزن محلی ما نصب شده باشد یا در آن ساختار دایرکتوری خاص قرار داشته باشد (والدین POM. xml یکی از فهرست های بالاتر از POM. xml ماژول است).
اما اگر والدین هنوز نصب نشده باشند و اگر ساختار دایرکتوری مانند مثال زیر باشد ، چه می شود؟
راه حل
برای پرداختن به این ساختار دایرکتوری (یا هر ساختار دایرکتوری دیگر) ، ما باید این عنصر را به بخش والدین خود اضافه کنیم.
همانطور که از نام آن پیداست ، این مسیر نسبی از pom. xml ماژول به pom. xml والدین است.
تجمع پروژه
جمع بندی پروژه مشابه با وراثت پروژه است. اما به جای مشخص کردن POM والدین از ماژول ، ماژول ها را از POM والدین مشخص می کند. با این کار ، پروژه والدین اکنون ماژول های خود را می داند ، و اگر یک دستور maven در برابر پروژه والدین فراخوانی شود ، آن فرمان Maven نیز به ماژول های والدین نیز اعدام می شود. برای انجام جمع آوری پروژه ، باید موارد زیر را انجام دهید:
- بسته بندی والدین POMS را به مقدار "POM" تغییر دهید.
- دایرکتوری های ماژول های خود (POM های کودکان) را در والدین مشخص کنید.
مثال 3
سناریو
با توجه به POM های هنری اصلی قبلی و ساختار دایرکتوری:
com. mycompany. app:my-app:1's pom
com. mycompany. app:my-module:1's pom
ساخت دایرکتوری
راه حل
اگر بخواهیم ماژول خود را در APP جمع کنیم ، فقط باید APP را اصلاح کنیم.
در بازنگری شده com. mycompany. app:my-app:1 ، بخش بسته بندی و بخش های ماژول ها اضافه شد. برای بسته بندی ، مقدار آن روی "POM" تنظیم شده است ، و برای بخش ماژول ها ، ما این عنصر را داریمماژول منوادارزشمسیر نسبی از com. mycompany. app:my-app:1 to com. mycompany. app:my-module:1's pom است (با تمرین ، ما از مصنوعات ماژول به عنوان نام دایرکتوری ماژول استفاده می کنیم).
اکنون ، هر زمان که یک فرمان maven com. mycompany. app:my-app:1 پردازش کند ، همان فرمان maven علیه com. mycompany. app:my-module:1 نیز اجرا می شود. علاوه بر این ، برخی از دستورات (اهداف به طور خاص) تجمع پروژه را متفاوت می کنند.
مثال 4
سناریو
اما اگر ساختار دایرکتوری را به موارد زیر تغییر دهیم ، چه می شود:
چگونه والدین POM ماژول های خود را مشخص می کنند؟
راه حل
جواب؟- به همان روش مثال 3 ، با مشخص کردن مسیر به ماژول.
وراثت پروژه در مقابل تجمع پروژه
اگر چندین پروژه Maven دارید و همه آنها پیکربندی های مشابهی دارند ، می توانید با بیرون کشیدن آن پیکربندی های مشابه و ساخت یک پروژه والدین ، پروژه های خود را مجدداً مورد استفاده قرار دهید. بنابراین ، تمام کاری که ، شما باید انجام دهید این است که پروژه های Maven خود را به ارث ببرد که پروژه والدین را به ارث می برد ، و سپس آن تنظیمات برای همه آنها اعمال می شود.
و اگر گروهی از پروژه ها دارید که با هم ساخته شده یا پردازش شده اند ، می توانید یک پروژه والدین ایجاد کنید و این پروژه والدین را به عنوان ماژول های آن اعلام کنید. با این کار ، شما فقط باید والدین را بسازید و بقیه دنبال می شوند.
سناریو
- com. mycompany. app:my-app:1's pom
- com. mycompany. app:my-module:1's pom
- راه حل
com. mycompany. app:my-app:1's pom
سناریو
خواص
com. mycompany. app:my-app:1's pom
com. mycompany. app:my-module:1's pom
راه حل
com. mycompany. app:my-app:1's pom
com. mycompany. app:my-module:1's pom
استراتژی ترید...
ما را در سایت استراتژی ترید دنبال می کنید
برچسب :
نویسنده : مرجان شیرمحمدی
بازدید : 53
تاريخ : سه
شنبه
15 فروردين
1402 ساعت: 12:51