كيف يمكنك تنظيم غير مصدر الموارد المتاحة في CLASSPATH الخاص بك في المشروع جافا؟

StackOverflow https://stackoverflow.com/questions/349787

سؤال

في برنامج المشروع مكتوب بلغة جافا ديك كثير من الأحيان الموارد، التي هي جزء من المشروع وينبغي أن تدرج في CLASSPATH. على سبيل المثال بعض النماذج أو الصور، التي يجب أن يكون الوصول إليها من خلال CLASSPATH (getResource). ينبغي أن تدرج هذه الملفات إلى JAR ملف إنتاجها.

من الواضح أن هذه الموارد يجب أن تضاف إلى المراجعة ضبط النظام. ولكن في الدليل الذي وضع هذه الملفات؟ بالتوازي مع المصدر ملفات جافا أو في دليل آخر أن يستنسخ أيضا حزمة البنية المطلوبة؟

هل كانت مفيدة؟

المحلول

وأنا أفضل الحل الأخير الخاص بك: دليل منفصل أن ميميكس هيكل حزمة رمز المصدر. بهذه الطريقة فإنها لن هزم شفرة المصدر الخاصة بك ولكن سوف يكون على حق بجوار ملفات فئة جمعت في ملف JAR تعبئتها.

نصائح أخرى

مخضرم يضعها في SRC / الرئيسي / موارد / (رمز جافا سيذهب الى SRC / الرئيسية / جافا /). والسبب الرئيسي هو أن مخضرم يمكن ترجمة التعليمات البرمجية بلغات مختلفة وكان من المنطقي للحفاظ على فصل ذلك ترجمة واحدة لا الخلط من جانب ملفات أخرى.

في حالة الموارد، سوف مخضرم استبدال المتغيرات فيها قبل أن يتم إضافتها إلى جرة، لذلك هم "جمعت" المصادر كذلك.

وشخصيا، كنت تفضل وجود لهم مع رمز المصدر إذا كانت مرتبطة بقوة إلى أجزاء معينة من القانون، وإذا لم تكن هناك الكثير منهم.

ولكن إذا كان من المنطقي لتلك الملفات أن يكون الهيكل التنظيمي الخاص بها، أو إذا كان هناك المئات من الملفات التي من شأنها أن تجعل من الصعب العثور على شفرة المصدر من بينها، فما استقاموا لكم فاستقيموا الاحتفاظ بها منفصلة.

وهذا يعتمد على تفضيلاتك. وجود لهم مختلطة مع ملفات التعليمات البرمجية المصدر يجعل refactorings مثل إعادة تسمية حزم أسهل (كما يتم نقل ملتقيات توغيثير مع المصادر)، ولكن مع أكثر من حفنة من الرموز والصور وملفات الترجمة، وتحصل على فوضى من الملفات بسهولة جدا.

ومع أدوات اليوم أيضا لا يهم حقا. إذا كنت تستخدم الكسوف، نتبيانس أو أداة أخرى، وأنهم جميعا تتيح لك الحصول على حزم ثنائية مع تخطيط مختلف عن شفرة المصدر. حتى في نهاية المطاف يمكنك أن تفعل ذلك وكأنك تريد.

وأنا شخصيا في محاولة لتجنب الخلط مصدر الموارد، لأنني عادة تغيير الموارد نادرا جدا، ولكن في كثير من الأحيان الكود المصدري للغاية.

وأنا عادة ما يذهب مثل هذا:

project/src
project/resources
project/classes
project/lib
project/dist

وكلا <م> SRC و <م> الموارد لديها بنية الحزمة وأخذ ملف البناء <م> الطبقات و <م> الموارد كمدخل ل الجرة التي يتم وضعها في شعبة نظم .

عند تشغيل داخليا CLASSPATH شيء مثل: <م> ليب، الطبقات، والموارد؛

إذا التطبيق يحتوي على تركيب يخلق المثبت ويضع الدليل موارد سليمة في التركيب.

ويمكنك وضع هذه الأمور في classpath إذا لم أداة الإنشاء الخاصة بك الحصول على الخلط. والكسوف لا تحاول تجميع صور JPEG الخاصة بك، ولن نمل، لذلك ليس هناك الكثير للقلق. والشيء الجميل هو أنه إذا كان لديك الكثير من الأمور ذات الصلة يمكنك الاحتفاظ بها معا، والتي نظمتها وظيفة بدلا من حسب نوع الملف.

ونحن نفعل ذلك من حيث أعمل، لدينا رسائل البريد الإلكتروني التي تتطلب قليلا من رمز وحفنة من موارد ثابتة. وتحفظ جميع هذه الأمور معا في مجلد واحد في مسار المصدر جافا. ويمكننا أن نضيف وإزالة البريد الإلكتروني من النظام بسهولة، دون أن ننسى الأشياء أو الوقوع في الخطأ مثل مسارات SRC / الموارد غير متطابقة أو ملفات الأيتام في شجرة واحدة يست موجودة في شجرة أخرى.

وكما سبق أن قلت، والامر متروك لكم وقد تختلف في المشروع. على سبيل المثال، مع النصيبة ، فمن المعتاد جدا وعملي للحفاظ على الملفات .html بجوار الطبقات. أيضا، وأنا غالبا ما تبقي بعض التكوين مع رمز المصدر -. META-INF، WEB-INF، وقطع الأشجار

لجعل مخضرم تأخذ الموارد من شجرة المصدر، استخدم هذا:

<build>
   <resources>
     <resource>
         <directory>src/main/resources</directory>
     </resource>
     <!-- Web - Wicket -->
     <resource>
         <filtering>false</filtering>
         <directory>src/main/java</directory>
         <includes><include>**</include></includes>
         <excludes><exclude>**/*.java</exclude></excludes>
     </resource>
  </resources>

  <testResources>
     <testResource>
         <directory>src/test/resources</directory>
     </testResource>
     <!-- Web - Wicket -->
     <testResource>
         <filtering>false</filtering>
         <directory>src/main/java</directory>
         <includes><include>**</include></includes>
         <excludes><exclude>**/*.java</exclude></excludes>
     </testResource>
  </testResources>

والسبب الرئيسي للحفاظ على الموارد المنفصلين (إيمهو) الفصل بين الأدوار العمل. مثلا إذا كان لديك مشروع مع فرق الترجمة، هل تبقي الموارد مع سلاسل فصلها عن رمز ومع امتيازات SCM مختلفة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top