في Java 9 وما بعدها، يمكنك استخدام الوحدات (Modules) لتنظيم وإدارة تبعيات المشروع. عندما تنشئ وحدة Java، يجب أن تحتوي على ملف module-info.java لتعريف الوحدة وتبعياتها. إذا كان لديك وحدة Java 9 وتحتاج إلى استخدام تبعيات خارجية لم تتبع نفس النهج في تنظيم تبعياتها (أو لا يمكنك تغييرها)، يمكنك استخدام تقنية المسارات (Paths) والوحدات الخارجية (Automatic-Module) للتعامل مع هذه الحالة.
لتحقيق هذا، يمكنك اتباع الخطوات التالية:
-
تعارض إصدارات تبعيات Carthage و CocoaPods02/03/2024
-
تحليل وتحويل وسائط السطر في C27/02/2024
-
إنشاء ملف module-info.java: في مشروعك الرئيسي (de.app1)، يجب عليك إنشاء ملف module-info.java بالشكل التالي:
javamodule de.app1 { requires de.app2; }
حيث تشير الـ
requires
إلى وحدة الـ(de.app2) التي تحتاجها. -
تحديد المسار للوحدة الخارجية: يمكنك تحديد المسار الذي يحتوي على ملف الجر (jar) للوحدة الخارجية (de.app2) باستخدام خاصية الفئات (classpath). يمكنك فعل ذلك باستخدام خاصية
-p
مع أمر التجميع (javac)، على سبيل المثال:bashjavac -p /path/to/de.app2.jar -d out/de.app1 src/de/app/App.java
حيث
/path/to/de.app2.jar
هو مسار الملف الجر لوحدة (de.app2). -
تحديد الوحدة الخارجية كوحدة تلقائية (Automatic Module): إذا كانت الوحدة الخارجية (de.app2) لا تحتوي على ملف module-info.java، يمكنك تحديدها كوحدة تلقائية باستخدام خاصية
--add-modules
مع أمر التشغيل (java)، على سبيل المثال:bashjava --module-path /path/to/de.app2.jar --add-modules de.app2 -cp out/de.app1 de.app.App
حيث
/path/to/de.app2.jar
هو مسار الملف الجر لوحدة (de.app2).
من المهم أن تلاحظ أن استخدام وحدات تلقائية يعتبر حلاً مؤقتاً، ويجب عليك التحقق من إمكانية تحويل الوحدة الخارجية إلى وحدة Java صحيحة بإضافة ملف module-info.java بها.
المزيد من المعلومات
بالطبع! في Java 9 والإصدارات الأحدث، يتم استخدام المفهوم الجديد للوحدات (Modules) لتنظيم البرامج وتبعياتها. يمكنك تعريف وحدة Java بواسطة ملف module-info.java الذي يحتوي على تعريف للوحدة بما في ذلك الوحدات التي تعتمد عليها (requires) والحزم التي تصدرها (exports). الهدف من هذا التغيير هو تبسيط إدارة تبعيات المشاريع وتحسين تنظيم الكود.
بشكل عام، يعتبر تحويل وحدات خارجية إلى وحدات Java صحيحة الحلا الأمثل، حيث يمكنك ذلك بإضافة ملف module-info.java إلى جميع المشاريع التي تعتمد عليها. ومع ذلك، في حالة عدم إمكانية تعديل تلك الوحدات (مثل تلك المصادر الخارجية مثل Apache Commons)، يمكن استخدام الوحدات التلقائية كحلاً مؤقتًا.
تجدر الإشارة إلى أن استخدام الوحدات التلقائية يمكن أن يسبب مشاكل في بعض الحالات، مثل صعوبة تحديد الاعتماديات الصحيحة والتحكم في نطاق الوحدة. لذا، يفضل دائمًا تحويل الوحدات الخارجية إلى وحدات Java صحيحة عندما يكون ذلك ممكنًا.