English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
ملف تكوين البناء هو سلسلة من قيم الخيارات التي يمكن استخدامها لتعيين أو تغيير القيم الافتراضية لبناء Maven.
باستخدام ملف تكوين البناء، يمكنك تخصيص طريقة البناء للبيئات المختلفة مثل بيئة الإنتاج (Production) وبيئة التطوير (Development).
ملف الإعدادات يستخدم في ملف pom.xml باستخدام عناصر activeProfiles أو profiles ويتم تفعيله عبر طرق متعددة. يتم تعديل ملف الإعدادات في بناء POM ويستخدم لتعيين مختلف البيئات الهدف للمعلمات (مثل، بيئة التطوير (Development)، اختبار (Testing) وبيئة الإنتاج (Production) وعنوان خادم قاعدة البيانات).
يكون نوع ملف تكوين البناء تقريباً من ثلاثة أنواع:
النوع | أين يتم تعريفه |
---|---|
مشروع (Per Project) | تم تعريفه في ملف POM للمشروع pom.xml |
مستخدم (Per User) | تم تعريفه في ملف إعدادات Maven xml (%USER_HOME%/.m2/settings.xml) |
عالمي (Global) | تم تعريفه في ملف إعدادات Maven العالمية xml (%M2_HOME%/conf/settings.xml) |
يمكن تفعيل ملف تكوين بناء Maven بطرق متعددة.
باستخدام إدخال أوامر في وحدة التحكم بالأوامر بشكل واضح.
باستخدام إعدادات Maven.
باستخدام متغيرات البيئة (متغيرات المستخدم أو النظام).
إعدادات نظام التشغيل (مثل، سلسلة Windows).
وجود أو عدم وجود ملف.
نفترض بنية المشروع كالت:
في دليل src/main/resources هناك ثلاثة ملفات تستخدم للاختبار:
اسم الملف | الوصف |
---|---|
env.properties | إعدادات التكوين الافتراضية عند عدم تحديد ملف تكوين. |
env.test.properties | إعدادات التكوين عند استخدام ملف تكوين الاختبار. |
env.prod.properties | إعدادات التكوين عند استخدام ملف تكوين الإنتاج. |
ملاحظة:هذه الثلاثة ملفات التكوين ليست لتقديم وظيفة ملف تكوين البناء، بل لغرض هذا الاختبار؛ على سبيل المثال، إذا كنت قد قمت بتحديد ملف تكوين البناء كـ prod، فإن المشروع سيستخدم ملف env.prod.properties.
ملاحظة:المثال التالي يستخدم ما زال plug-in AntRun، لأن هذا plug-in يمكنه ربط مراحل حياة Maven، وإذا لم يكن هناك أي رمز مكتوب باستخدام علامات Ant يمكنه إخراج معلومات وإعادة توزيع الملفات، وما إلى ذلك. الباقي ليس له علاقة بملف تكوين البناء هذا.
سيناريو يمكننا من تحديد مجموعة من معلومات التكوين، ثم تحديد شرط التفعيل. بهذا يمكننا تحديد عدة سيناريوهات، وكل سيناريو يتوافق مع شرط تفعيله ومعلومات التكوين، مما يحقق تأثير استخدام معلومات تكوين مختلفة في بيئات مختلفة.
في هذا المثال، سنضيف هدف maven-antrun-plugin:run إلى مرحلة الاختبار. بهذا يمكننا إخراج معلومات نصية في مختلف السيناريوهات. سنستخدم pom.xml لتحديد سيناريوهات مختلفة، ونستخدم أوامر Maven في حاسوب التحكم للتفعيل سيناريو.
ملف 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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jsoft.test</groupId> <artifactId>testproject</artifactId> <packaging>jar</packaging> <version>0.1-SNAPSHOT</version> <name>testproject</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <profiles> <profile> <id>test</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>test</phase> </goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>Using env.test.properties</echo> <copy file="src/main/resources/env.test.properties" tofile="${project.build.outputDirectory}/env.properties" overwrite="true"/> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>normal</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>test</phase> </goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>استخدام env.properties</echo> <copy file="src/main/resources/env.properties" tofile="${project.build.outputDirectory}/env.properties" overwrite="true"/> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>prod</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>test</phase> </goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>استخدام env.prod.properties</echo> <copy file="src/main/resources/env.prod.properties" tofile="${project.build.outputDirectory}/env.properties" overwrite="true"/> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> </project>
ملاحظة:ملف تكوين البناءيُستخدم <profiles> النقاط.
ملاحظة:تم إنشاء ثلاثة <profiles>، حيث <id> تم التمييز بين <profiles> لتنفيذ مهام AntRun المختلفة؛ بينما يمكن فهم مهام AntRun بأنها تشاهد مرحلة حياة Maven test، وعندما يتم تنفيذ test بواسطة Maven، يتم إرسال مهام AntRun، ويتم فيها إدخال النصوص وإعادة تكرار الملفات إلى المواقع المحددة؛ وبالنسبة للمهمة التي يتم تنفيذها من AntRun، في هذه اللحظةملف تكوين البناءيؤدي إلى نقل المعلمات المحددة، مثل إدخال المعلمات المحددة عبر معامل الأوامر <id>.
إجراء الأمر:
mvn test -Ptest
إشارة: الأول test هو مرحلة حياة Maven، والثاني test هوملف تكوين البناءالمعلمات المحددة <id>، هذه المعلمات يتم نقلها من خلال -P، بالطبع، يمكن أن تكون prod أو normal وما إلى ذلك، التي تحددها أنت<id>.
نتائج التنفيذ كالتالي:
يظهر أن مهمة AntRun تم تنشيطها بنجاح. وهي تتوافق معملف تكوين البناءالمهمة التي تحتوي على <id> test.
واختبار الأمرين الآخرين، النتائج كالتالي:
فتح %USER_HOME%/.m2 في مجلد settings.xml ملف، حيث %USER_HOME% مثل دليل المستخدم الرئيسي. إذا لم يكن ملف setting.xml موجودًا، يتم نسخه مباشرة %M2_HOME%/conf/settings.xml إلى مجلد .m2، حيث %M2_HOME% مثل دليل تثبيت Maven.
تأكد من تعديل ملف setting.xml، وإضافة خاصية <activeProfiles>:
<settings 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/settings-1.0.0.xsd"> ... <activeProfiles> <activeProfile>test</activeProfile> </activeProfiles> </settings>
إجراء الأمر:
mvn test
الإشارة 1:لا تحتاج إلى استخدام -Ptest لتحديد المعلمات الآن، <activeprofile> في ملف setting.xml المحدد بالفعل test كمعلمات بديلة.
الإشارة 2:يمكن استخدامها أيضًا في %M2_HOME%/conf/settings.xml لفائف التكوين، النتيجة متشابهة.
نتيجة التنفيذ:
أولاً، قم بإزالة جميع القيم من setting.xml التي تم اختبارها في الخطوة السابقة.
ثم في نقطة <id> التي لها <profile> test في pom.xml، أضف نقطة <activation>:
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jsoft.test</groupId> <artifactId>testproject</artifactId> <packaging>jar</packaging> <version>0.1-SNAPSHOT</version> <name>testproject</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <profiles> <profile> <id>test</id> <activation> <property> <name>env</name> <value>test</value> </property> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>test</phase> </goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>Using env.test.properties</echo> <copy file="src/main/resources/env.test.properties" tofile="${project.build.outputDirectory}/env.properties" overwrite="true"/> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>normal</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>test</phase> </goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>استخدام env.properties</echo> <copy file="src/main/resources/env.properties" tofile="${project.build.outputDirectory}/env.properties" overwrite="true"/> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>prod</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>test</phase> </goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>استخدام env.prod.properties</echo> <copy file="src/main/resources/env.prod.properties" tofile="${project.build.outputDirectory}/env.properties" overwrite="true"/> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> </project>
إجراء الأمر:
mvn test -Denv=test
الإشارة 1:تم استخدام -D لتمرير متغيرات البيئة فيما فوق، حيث evn يعني القيمة التي تم إعدادها سابقًا <name>، و test يعني <value>.
الإشارة 2:تم اختبار متغيرات بيئة النظام على Windows 10، ولكن لم يكن له تأثير، لذا، يمكن فقط تمريره من خلال -D.
نتيجة التنفيذ:
يحتوي عنصر activation على المعلومات التالية عن نظام التشغيل. سيتم تفعيل Profile test عند وجود نظام التشغيل Windows XP.
<profile> <id>test</id> <activation> <os> <name>Windows XP</name> <family>Windows</family> <arch>x86</arch> <version>5.1.2600</version> </os> </activation> </profile>
الآن افتح وحدة التحكم بالأوامر، انتقل إلى مجلد pom.xml، وأecute الأمر التالي. لا تستخدم خيار -P لتحديد اسم Profile. سيعرض Maven نتائج Profile test المفعلة.
mvn test
الآن استخدم عنصر activation لتشمل المعلومات التالية عن نظام التشغيل. سيتم تفعيل Profile test عند فقدان target/generated-sources/axistools/wsdl2java/com/companyname/group.
<profile> <id>test</id> <activation> <file> <missing>target/generated-sources/axistools/wsdl2java/ com/companyname/group</missing> </file> </activation> </profile>
الآن افتح وحدة التحكم بالأوامر، انتقل إلى مجلد pom.xml، وأecute الأمر التالي. لا تستخدم خيار -P لتحديد اسم Profile. سيعرض Maven نتائج Profile test المفعلة.
mvn test
مراجعة: https://www.cnblogs.com/EasonJim/p/6828743.html