Maven / Gradle لجافا: دليل شامل مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: ما هما Maven و Gradle ولماذا نحتاجهما؟

\n\n

في عالم تطوير Java، توجد مشكلة أساسية: كيف ندير التبعيات (المكتبات الخارجية)، ونؤتمت بناء المشروع، ونشغل الاختبارات، وننشئ القطع الأثرية النهائية (JAR, WAR)؟ التنزيل اليدوي لملفات JAR وتهيئة classpath هو طريق مسدود، خاصة للمشاريع التي تحتوي على عشرات التبعيات.

\n\n

Maven و Gradle هما أشهر نظامين للبناء الآلي (build automation tools) لجافا. يحلان المشاكل التالية:

\n
    \n
  • إدارة التبعيات: التنزيل التلقائي للمكتبات من المستودعات المركزية (Maven Central, Google Maven) وتبعياتها غير المباشرة.
  • \n
  • توحيد دورة الحياة: الترجمة، الاختبار، التعبئة، النشر - كل هذا يتم بأوامر قياسية.
  • \n
  • قابلية إعادة إنتاج البناء: يمكن لأي مطور بناء المشروع بأمر واحد، مع وجود الكود المصدري وملف التهيئة فقط.
  • \n
  • التكامل مع CI/CD: Jenkins, GitLab CI, GitHub Actions تشغل بسهولة عمليات بناء Maven/Gradle.
  • \n
\n\n

يستخدم Maven XML (ملف pom.xml) ودورة حياة صارمة. يستخدم Gradle Groovy أو Kotlin DSL (ملف build.gradle أو build.gradle.kts)، وهو أكثر مرونة وسرعة بفضل البناء المتزايد. في هذه المقالة، سننظر في كلا الأداتين، لكننا سنركز على Gradle كحل أكثر حداثة.

\n\n

تثبيت Maven و Gradle

\n\n

تثبيت Maven

\n

لا يتم تثبيت Maven عبر pip أو npm. يجب تنزيله من الموقع الرسمي أو تثبيته عبر مدير حزم نظام التشغيل.

\n
# macOS (Homebrew)\nbrew install maven\n\n# Ubuntu/Debian\nsudo apt-get update\nsudo apt-get install maven\n\n# Windows (Chocolatey)\nchoco install maven\n\n# التحقق من التثبيت\nmvn --version
\n\n

تثبيت Gradle

\n

يتم تثبيت Gradle أيضًا بشكل منفصل. يُوصى باستخدام SDKMAN! لإدارة الإصدارات.

\n
# تثبيت SDKMAN (إذا لم يكن مثبتًا بالفعل)\ncurl -s "https://get.sdkman.io" | bash\nsource "$HOME/.sdkman/bin/sdkman-init.sh"\n\n# تثبيت أحدث إصدار من Gradle\nsdk install gradle\n\n# التحقق\ngradle --version\n\n# بديل: التنزيل من https://gradle.org/releases/ وفك الضغط
\n\n

بداية سريعة: إنشاء مشروع

\n\n

إنشاء مشروع باستخدام Maven

\n

يمكن لـ Maven إنشاء هيكل المشروع عبر النماذج الأولية (archetypes).

\n
# إنشاء مشروع Java بسيط\nmvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false\n\n# الانتقال إلى مجلد المشروع\ncd my-app\n\n# بناء المشروع\nmvn clean package\n\n# التشغيل (إذا تم إعداد الفئة الرئيسية)\njava -cp target/my-app-1.0-SNAPSHOT.jar com.example.App
\n\n

إنشاء مشروع باستخدام Gradle

\n

يستخدم Gradle الأمر init لإنشاء الهيكل.

\n
# إنشاء مجلد وتهيئة المشروع\nmkdir my-gradle-app\ncd my-gradle-app\ngradle init\n\n# الاختيار: 2: application -> 3: Java -> 1: Groovy DSL -> 2: JUnit Jupiter -> Enter\n\n# البناء والتشغيل\n./gradlew build\n./gradlew run
\n\n

بعد ذلك، سيكون لديك هيكل المشروع مع ملفات build.gradle (أو pom.xml لـ Maven) ومجلدات src/main/java و src/test/java.

\n\n

الطرق/الدوال الأساسية (Gradle DSL)

\n

لننظر إلى الهياكل الأساسية لـ Gradle (Groovy DSL). بالنسبة لـ Maven فهي مماثلة، لكن بناء جملة XML.

\n\n

1. dependencies { ... }

\n

ما تفعله: تحدد تبعيات المشروع - المكتبات الخارجية التي سيتم تنزيلها من المستودعات.

\n

المعلمات: داخل الكتلة، يتم تحديد التهيئات (implementation, testImplementation, compileOnly وغيرها) وإحداثيات

توصيات