एक जावा परियोजना के लिए पैकेज संरचना?


116

जावा वेब एप्लिकेशन में पैकेज संरचनाओं की स्थापना के लिए सबसे अच्छा अभ्यास क्या है?

आप अपना src, यूनिट टेस्ट कोड आदि कैसे सेटअप करेंगे?

जवाबों:


95

आप मावेन के मानक परियोजना लेआउट का पालन कर सकते हैं । आपको वास्तव में मावेन का उपयोग करने की आवश्यकता नहीं है, लेकिन यह भविष्य में संक्रमण को आसान बना देगा (यदि आवश्यक हो)। इसके अलावा, अन्य डेवलपर्स का उपयोग उस लेआउट को देखने के लिए किया जाएगा, क्योंकि कई खुले स्रोत परियोजनाएं इस तरह से बाहर रखी जाती हैं:


2
यदि आपके पास कोई विकल्प है तो मैं मावेन के लेआउट का उपयोग करने की भी सलाह देता हूं। यह एक सुविचारित संरचना है जिसे युद्ध-परीक्षण किया गया है, और यह कई डेवलपर्स से परिचित है।
डोव वास्सरमैन

15
आप निर्देशिका लेआउट बनाने के लिए इस oneliner का उपयोग कर सकते हैं: mkdir -p src / {main / {जावा, संसाधन, फ़िल्टर, असेंबली, कॉन्फ़िगरेशन, वेबैप}, परीक्षण / {java, संसाधन, फ़िल्टर}, साइट}
डैनियल पेपर

1
मावेन का मानक प्रोजेक्ट लेआउट बदसूरत है: ... /
Yousha Aleayoub

2
@YoushaAleayoub आपको इससे शादी नहीं करनी है
अश्विन शर्मा

59

आपके द्वारा जांचे जाने वाले कुछ मौजूदा संसाधन हैं:

  1. अपने जावा क्लासेस को उचित रूप से पैकेज करें
  2. स्प्रिंग 2.5 आर्किटेक्चर
  3. जावा ट्यूटोरियल - एक पैकेज का नामकरण
  4. सन नामकरण परंपराएँ

इसके लायक क्या है, मेरे अपने व्यक्तिगत दिशानिर्देश जिनका मैं उपयोग करता हूं वे इस प्रकार हैं:

  1. रिवर्स डोमेन से शुरू करें, जैसे "com.mycompany"।
  2. उत्पाद नाम का उपयोग करें, जैसे "मायप्रोडक्ट"। कुछ मामलों में मेरे पास सामान्य पैकेज होते हैं जो किसी विशेष उत्पाद से संबंधित नहीं होते हैं। ये इन सामान्य वर्गों की कार्यक्षमता के अनुसार वर्गीकृत हो जाएंगे, जैसे "io", "उपयोग", "ui", आदि।
  3. इसके बाद यह अधिक मुक्त-रूप हो जाता है। आमतौर पर मैं परियोजना, कार्यक्षमता के क्षेत्र, तैनाती, आदि के अनुसार समूह करता हूं। उदाहरण के लिए मेरे पास "प्रोजेक्ट 1", "प्रोजेक्ट 2", "यूआई", "क्लाइंट" आदि हो सकते हैं।

अन्य बिंदुओं की एक जोड़ी:

  1. यह उन परियोजनाओं में काफी सामान्य है, जो मैंने पैकेज के लिए डिज़ाइन डॉक्यूमेंटेशन से प्रवाहित करने के लिए काम किया है। आमतौर पर उत्पादों को पहले से ही कार्यक्षमता या उद्देश्य के क्षेत्रों में अलग किया जाता है।
  2. सामान्य कार्यक्षमता को उच्च पैकेज में तुरंत धकेलने के बारे में बहुत अधिक तनाव न करें। वहाँ परियोजनाओं, उत्पादों, आदि, और फिर परावर्तक की आवश्यकता के लिए प्रतीक्षा करें।
  3. अंतर-पैकेज निर्भरताएँ देखें। वे सभी बुरे नहीं हैं, लेकिन यह अलग-अलग इकाइयों के बीच तंग युग्मन का संकेत दे सकता है। ऐसे उपकरण हैं जो आपको इस पर नज़र रखने में मदद कर सकते हैं।

2
रिवर्स डोमेन केस ("com.mycompany") में, "कॉम" पैकेज आमतौर पर "mycompany" उप-पैकेज को छोड़कर खाली होता है?
एलेक्स पार्कर

45

मैं सुझाव दूंगा कि आप अपनी पैकेज संरचना को फीचर के द्वारा बनाएं, न कि कार्यान्वयन परत द्वारा। इस पर एक अच्छा लेखन जावा प्रथा है: पैकेज बाय फीचर, लेयर नहीं


2
धन्यवाद। यह वही है जो मैं अपने विचारों को टीम को बताने के लिए देख रहा था
प्राणाली

8
और अगर आप डेटाबेस स्विच करना चाहते हैं? केवल 30 अलग-अलग पैकेज में देखना होगा। SFTP से webservices में जाएँ? फिर से केवल 30 अलग-अलग जगहों पर देखना होगा। निश्चित रूप से प्रशंसक नहीं हैं।
सैमुअलकविस

1
एक और उदाहरण जहां लेयर द्वारा पैकेजिंग के लाभ हैं: यदि आप JSON (जैसे gson के साथ) में वर्गों को अनुक्रमित करते हैं, यदि उन कक्षाओं को बाधित किया जाता है (जैसे कि Proguard द्वारा) (डी) क्रमांकन विफल हो जाएगा; आपको ऐसी कक्षाओं को न छूने के लिए प्रोगार्ड को कॉन्फ़िगर करने की आवश्यकता है - यह उन सभी के साथ एकल पैकेज निर्दिष्ट करने के लिए सबसे आसान है
jmuet

6

मुझे आमतौर पर निम्नलिखित पसंद है:

  • बिन (बायनेरिज़)
  • दस्तावेज़ (दस्तावेज़)
  • inf (सूचना)
  • lib (पुस्तकालय)
  • रेस (संसाधन)
  • src (स्रोत)
  • tst (टेस्ट)

इन्हें अपरंपरागत माना जा सकता है, लेकिन मुझे यह चीजों को व्यवस्थित करने का बहुत अच्छा तरीका लगता है।


"इन्हें अपरंपरागत माना जा सकता है" वे वास्तव में अपरंपरागत और बुरे तरीके से हैं ...
mahieddine

2
@mahieddine आप उन्हें बुरा क्यों मानते हैं?
थॉमस

वैसे यह मेरे लिए नहीं था जो कहा गया था, लेकिन यहाँ मेरे कुछ विचार हैं: आपकी परीक्षा कक्षाएं स्रोत कोड हैं इसलिए निर्देशिका "tst" (ज्यादातर लोग टेस्ट btw संक्षिप्त नहीं करते हैं) src की एक उप निर्देशिका होनी चाहिए (जैसे " src "src / main" और "tst" बन जाता है "src / test")। इसके अलावा "inf" में वह सामग्री शामिल है जो "डॉक्टर" में हो सकती है।
निको वावरजीनिक

6
The way I usually organise is
- src
        - main
                - java
                - groovy
                - resources
        - test
                - java
                - groovy
- lib
- build
        - test 
                - reports
                - classes
- doc

3

जिस तरह से मैं आमतौर पर फ़ोल्डर के अपने पदानुक्रम है-

  • परियोजना का नाम
    • src
    • बिन
    • परीक्षण
    • libs
    • डॉक्स

1

एक अन्य तरीका एपीआई, सेवाओं और संस्थाओं को अलग-अलग पैकेज में अलग करना है।

यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.