English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
تحدد دورة الحياة البنائية الخاصة بـ Maven عملية بناء وتوزيع المشروع.
تتكون دورة الحياة البنائية التقليدية الخاصة بـ Maven من سلسلة من المراحل التالية:
مرحلة | معالجة | وصف |
---|---|---|
تحقق validate | تحقق المشروع | تحقق من أن المشروع صحيح وأن جميع المعلومات الضرورية متاحة |
تجميع compile | تنفيذ التجميع | يتم إكمال تجميع الشيفرة في هذه المرحلة |
اختبار Test | اختبار | تشغيل الاختبارات باستخدام إطار الاختبارات الوحدوية المناسب (مثل JUnit) |
حزمة package | حزم | إنشاء حزمة JAR/WAR حسب التعريف المذكور في pom.xml |
تحقق verify | تحقق | تحقق من نتائج الاختبارات المتكاملة لضمان أن الجودة تتناسب |
تثبيت install | تثبيت | تثبيت الحزم الم打包ة في المستودع المحلي لتوفرها للمشاريع الأخرى |
توزيع deploy | توزيع | نسخ الحزم النهائية للمشروع إلى مستودع بعيد لتشاركها مع المطورين الآخرين والمشاريع |
لإكمال دورة الحياة default، سيتم تنفيذ هذه المراحل (بما في ذلك مراحل الحياة الأخرى غير المذكورة هنا) بشكل ترتيب.
يملك Maven ثلاث دورات حياة قياسية هي:
clean: معالجة تنظيف المشروع
default (أو build): معالجة توزيع المشروع
site: معالجة إنشاء مستندات المشروع
هدف مثبت يمثل مهمة معينة (أكثر تفصيلاً من مرحلة البناء)، مما يساعد في بناء وإدارة المشروع. قد يتم ربط هذه الأهداف بمراحل متعددة أو بلا ربط. يمكن تنفيذ الأهداف التي لا ترتبط بأي مرحلة من مراحل الحياة البنائية من خلال التطبيق المباشر. يعتمد ترتيب تنفيذ هذه الأهداف على ترتيب التطبيق والمراحل.
على سبيل المثال، لنفكر في الأمر التالي:
clean و package هي مراحل البناء، و dependency:copy-dependencies هو الهدف
mvn clean dependency:copy-dependencies package
سيتم تنفيذ مرحلة clean هنا أولاً، ثم سيتم تنفيذ هدف dependency:copy-dependencies، وأخيرًا سيتم تنفيذ مرحلة package.
عندما ن�行رز mvn post-clean أمر، Maven يستدعي دورة الحياة clean، التي تتضمن الخطوات التالية:
pre-clean: تنفيذ بعض الأعمال التي يجب أن تتم قبل clean
clean: إزالة جميع الملفات التي تم إنشاؤها في بناء المرة السابقة
post-clean: تنفيذ بعض الأعمال التي يجب أن تتم بعد clean فورًا
clean في mvn clean هي نفسها clean في المرحلة السابقة، في مرحلة الحياة، عندما يتم تشغيل مرحلة، ستُشغّل جميع المراحل السابقة، بمعنى أن إذا تم تشغيل mvn clean، سيتم تشغيل مراحل الحياة التالية:
pre-clean, clean
إذا أردنا تشغيل mvn post-clean، سيتم تشغيل ثلاثة مراحل من مراحل الحياة:
pre-clean, clean, post-clean
يمكننا تعديل سلوك هذا الجزء من خلال تحديد هدف في أي مرحلة من مراحل الحياة لـ clean التي تُحدد.
في المثال التالي، سنضيف هدفًا maven-antrun-plugin:run إلى مراحل pre-clean، clean و post-clean. بهذا يمكننا إظهار معلومات النص في جميع مراحل الحياة لـ clean.
نحن نحن في مجلد C:\MVN\project، قمنا بإنشاء ملف pom.xml.
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.companyname.projectgroup</groupId> <artifactId>project</artifactId> <version>1.0</version> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.1</version> <executions> <execution> <id>id.pre-clean</id> <phase>pre-clean</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>pre-clean phase</echo> </tasks> </configuration> </execution> <execution> <id>id.clean</id> <phase>clean</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>clean phase</echo> </tasks> </configuration> </execution> <execution> <id>id.post-clean</id> <phase>post-clean</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>post-clean phase</echo> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
الآن افتح لوحة التحكم الإرشادية، انتقل إلى مجلد pom.xml، واكمل أمر mvn التالي.
C:\MVN\project>mvn post-clean
Maven يبدأ بمعالجة وإظهار جميع مراحل الحياة لـ clean.
[INFO] البحث عن المشاريع... [INFO] ------------------------------------------------------------------ [INFO] بناء jar غير مسمى - com.companyname.projectgroup:project:jar:1.0 [INFO] task-segment: [post-clean] [INFO] ------------------------------------------------------------------ [INFO] [antrun:run {execution: id.pre-clean}] [INFO] Executing tasks [echo] pre-clean phase [INFO] Executed tasks [INFO] [clean:clean {execution: default-clean}] [INFO] [antrun:run {execution: id.clean}] [INFO] Executing tasks [echo] clean phase [INFO] Executed tasks [INFO] [antrun:run {execution: id.post-clean}] [INFO] Executing tasks [echo] مرحلة post-clean [INFO] Executed tasks [INFO] ------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------ [INFO] الوقت الإجمالي: أقل من ثانية [INFO] انتهت في: السبت 07 تموز 13:38:59 IST 2012 [INFO] ذاكرة النهاية: 4M/44M [INFO] ------------------------------------------------------------------
يمكنك محاولة تعديل الأمر mvn clean لعرض pre-clean و clean، بينما لا يتم تنفيذ أي عملية في مرحلة post-clean.
هذا هو دورة الحياة الرئيسية الخاصة بمaven، ويستخدم لبناء التطبيقات، بما في ذلك 23 مرحلة أدناه:
مرحلة الحياة | وصف |
---|---|
تحقق (تحقق) | تحقق من أن المشروع صحيح وأن جميع المعلومات الضرورية يمكن أن تكتمل عملية بناء المشروع. |
إعداد (إعداد) | إعداد حالة البناء، مثل تعيين القيم للخصائص. |
إنشاء مصادر (إنشاء مصدر) | إنشاء أي مصدر يتم استخدامه في مرحلة التجميع. |
معالجة مصادر (معالجة ملفات المصادر) | معالجة مصادر المصدر، مثل تصفية القيم العشوائية. |
إنشاء المصادر (إنشاء ملفات المصادر) | إنشاء ملفات المصادر التي سيتم تضمينها في حزمة المشروع. |
معالجة المصادر (معالجة ملفات المصادر) | نسخ ومعالجة المصادر إلى مجلد الهدف، مما يعد أفضل إعدادًا للمرحلة التالية من التعبئة. |
تجميع (تجميع المصادر) | تجميع مصادر المشروع. |
معالجة كلاسات (معالجة ملفات الكلاسات) | معالجة ملفات التجميع التي يتم إنشاؤها، مثل تحسين تحسين ملفات class Java. |
إنشاء مصادر الاختبار (إنشاء مصدر الاختبار) | إنشاء أي مصدر اختبار يتم استخدامه في مرحلة التجميع. |
معالجة مصادر الاختبار (معالجة ملفات مصدر الاختبار) | معالجة ملفات المصدر لتجربة الاختبار، مثل تصفية القيم العشوائية. |
إنشاء موارد الاختبار (إنشاء ملفات موارد الاختبار) | إنشاء ملفات موارد الاختبار. |
معالجة موارد الاختبار (معالجة ملفات موارد الاختبار) | نسخ ومعالجة موارد الاختبار إلى مجلد الهدف. |
تجميع اختبار المصدر (تجميع مصدر الاختبار) | تجميع ملفات المصدر لتكون في مجلد الهدف للاختبار. |
معالجة ملفات الاختبار (معالجة ملفات اختبار الكلاسات) | معالجة ملفات التحقق التي يتم إنشاؤها من خلال تجميع ملفات الاختبار. |
اختبار (الاختبار) | استخدام هيكل اختبار وحدة مناسب لتنفيذ الاختبارات (Juint هو واحد منهم). |
prepare-package (تحضير الت打包) | تنفيذ أي إجراءات ضرورية قبل الت打包 لتحضير الت打包. |
package (تجميع) | تجميع الشيفرة المعدة إلى ملفات قابلة للنشر، مثل ملفات JAR أو WAR أو EAR. |
pre-integration-test (قبل الفحوصات التكاملية) | إجراء الأفعال اللازمة قبل إكمال الفحوصات التكاملية. على سبيل المثال، بناء البيئة المطلوبة. |
integration-test (فحوصات تكاملية) | معالجة وتوزيع المشروع إلى بيئة يمكن تشغيل الفحوصات التكاملية فيها. |
post-integration-test (بعد الفحوصات التكاملية) | إجراء الأفعال اللازمة بعد إكمال الفحوصات التكاملية. على سبيل المثال، تنظيف بيئة الفحوصات التكاملية. |
verify (تحقق) | تشغيل أي فحوصات لتحقق من أن حزمة المشروع صالحة وتحقق من معايير الجودة. |
install (تثبيت) | تثبيت حزمة المشروع في المستودع المحلي، مما يسمح للحزم باستخدامها كاعتمادات في مشاريع أخرى محلية. |
deploy (توزيع) | استنساخ حزمة المشروع النهائية إلى المستودع البعيد لتشاركها مع المطورين الآخرين والمشاريع. |
يوجد بعض المفاهيم المهمة المتعلقة بدورة Maven يجب توضيحها:
عندما يتم استدعاء مرحلة من خلال الأمر Maven، مثل mvn compile، سيتم تنفيذ جميع المراحل قبل هذه المرحلة بما في ذلك المرحلة نفسها.
ستتم دمج أهداف Maven المختلفة بناءً على نوع الت打包 (JAR / WAR / EAR) في مراحل دورة Maven المختلفة.
في المثال التالي، سنضيف هدف maven-antrun-plugin:run إلى جزء من دورة بناء الحياة. بهذا يمكننا عرض معلومات دورة الحياة النصية.
نحن قد قمنا بتحديث ملف pom.xml في مجلد C:\MVN\project.
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.companyname.projectgroup</groupId> <artifactId>project</artifactId> <version>1.0</version> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.1</version> <executions> <execution> <id>id.validate</id> <phase>validate</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>validate phase</echo> </tasks> </configuration> </execution> <execution> <id>id.compile</id> <phase>compile</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>compile phase</echo> </tasks> </configuration> </execution> <execution> <id>id.test</id> <phase>test</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>test phase</echo> </tasks> </configuration> </execution> <execution> <id>id.package</id> <phase>package</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>package phase</echo> </tasks> </configuration> </execution> <execution> <id>id.deploy</id> <phase>deploy</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>deploy phase</echo> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
الآن افتح محطة الأوامر، انتقل إلى مجلد pom.xml الموجود، وقم بتشغيل الأمر mvn التالي.
C:\MVN\project>mvn compile
سيتعين على Maven بدء معالجة عرض مراحل حياة البناء حتى مرحلة التجميع.
[INFO] البحث عن المشاريع... [INFO] ------------------------------------------------------------------ [INFO] بناء jar غير مسمى - com.companyname.projectgroup:project:jar:1.0 segment-task: [compile] [INFO] ------------------------------------------------------------------ [INFO] [antrun:run {execution: id.validate}] [INFO] Executing tasks [echo] مرحلة التحقق [INFO] Executed tasks [INFO] [resources:resources {execution: default-resources}] [WARNING] استخدم تشفير المنصة (Cp1252 في الواقع) للنسخ المصادر المفهرسة أيضًا، بناء هو يعتمد على المنصة! تجنب مجلد المصادر الموجود C:\MVN\project\src\main\resources [INFO] [compiler:compile {execution: default-compile}] [INFO] لا يوجد شيء لتجميعه - جميع الصفوف محدثة بالفعل [INFO] [antrun:run {execution: id.compile}] [INFO] Executing tasks [echo] مرحلة تجميع [INFO] Executed tasks [INFO] ------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------ [INFO] الوقت الإجمالي: 2 ثانية [INFO] انتهت في: السبت 07 تموز 20:18:25 IST 2012 [INFO] الذاكرة النهائية: 7M/64M [INFO] ------------------------------------------------------------------
في بيئة التطوير، استخدم الأمر التالي لبناء وتثبيت المشروع في مستودع محلي.
mvn install
يؤدي هذا الأمر قبل تنفيذ مرحلة install بشكل ترتيب تنفيذي إلى مراحل الحياة الافتراضية (تحقق، تجميع، تعبئة، إلخ)، نحتاج فقط إلى طلب آخر مرحلة، مثل install هنا.
في بيئة البناء، استخدم التعبير التالي لبناء وتوزيع المشروع بشكل نظيف إلى مستودع مشترك.
mvn clean deploy
هذه الأوامر يمكن استخدامها أيضًا في حالة متعددة الأنظمة، أي مشروع يحتوي على مشاريع فرعية متعددة، يقوم Maven بتنفيذ أمر clean في كل مشروع فرعي، ثم أمر deploy.
يستخدم ملحق Maven Site عادةً لإنشاء وثائق تقرير جديدة، نشر الموقع، إلخ.
pre-site: تنفيذ بعض الأعمال التي يجب أن تتم قبل إنشاء مستندات الموقع
site: إنشاء مستندات موقع المشروع
post-site: تنفيذ بعض الأعمال التي يجب أن تتم بعد إنشاء مستندات الموقع، وتحضير التوزيع
site-deploy: نقل مستندات الموقع المولد إلى خادم معين
يستخدم هنا عادةً المرحلة site و مرحلة site-deploy لإنشاء و نشر موقع Maven، هذا هو وظيفة قوية جدًا في Maven، يحبها Manager، يتم إنشاء الوثائق و البيانات الإحصائية تلقائيًا، تبدو جميلة. في المثال التالي، سنضيف هدف maven-antrun-plugin:run إلى جميع مراحل حياة Site. بهذا يمكننا عرض جميع معلومات الحياة.
نحن قد قمنا بتحديث ملف pom.xml في مجلد C:\MVN\project.
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.companyname.projectgroup</groupId> <artifactId>project</artifactId> <version>1.0</version> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.1</version> <executions> <execution> <id>id.pre-site</id> <phase>pre-site</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>pre-site phase</echo> </tasks> </configuration> </execution> <execution> <id>id.site</id> <phase>site</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>مرحلة site</echo> </tasks> </configuration> </execution> <execution> <id>id.post-site</id> <phase>post-site</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>مرحلة post-site</echo> </tasks> </configuration> </execution> <execution> <id>id.site-deploy</id> <phase>site-deploy</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>مرحلة site-deploy</echo> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
الآن افتح محطة الأوامر، انتقل إلى مجلد pom.xml الموجود، وقم بتشغيل الأمر mvn التالي.
C:\MVN\project>mvn site
Maven ستبدأ في معالجة وتعدين مراحل دورة الحياة site حتى مرحلة site.
[INFO] البحث عن المشاريع... [INFO] ------------------------------------------------------------------ [INFO] بناء jar غير مسمى - com.companyname.projectgroup:project:jar:1.0 [INFO] segment-tasks: [site] [INFO] ------------------------------------------------------------------ [INFO] [antrun:run {execution: id.pre-site}] [INFO] Executing tasks [echo] مرحلة pre-site [INFO] Executed tasks [INFO] [site:site {execution: default-site}] [INFO] إنتاج تقرير "About". [INFO] إنتاج تقرير "Issue Tracking". [INFO] إنتاج تقرير "Project Team". [INFO] إنتاج تقرير "Dependencies". [INFO] إنتاج تقرير "Project Plugins". [INFO] Generating "Continuous Integration" report. [INFO] Generating "Source Repository" report. [INFO] Generating "Project License" report. [INFO] Generating "Mailing Lists" report. [INFO] Generating "Plugin Management" report. [INFO] Generating "Project Summary" report. [INFO] [antrun:run {execution: id.site}] [INFO] Executing tasks [echo] مرحلة الموقع [INFO] Executed tasks [INFO] ------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------ [INFO] الوقت الإجمالي: 3 ثوان [INFO] انتهاء في: السبت 07 تموز 15:25:10 IST 2012 [INFO] الذاكرة النهائية: 24M/149M [INFO] ------------------------------------------------------------------```