2010-09-22 13 views
5

मैं स्प्रिंग (एमवीसी), हाइबरनेट, पोस्टग्रेएसक्यूएल (मेवेन का उपयोग करके) पर आधारित एक वेब-प्रोजेक्ट विकसित कर रहा हूं। अब मैं एक नया ग्राहक प्राप्त करने की कोशिश कर रहा हूं जिसके लिए आवेदन के कई हिस्सों में कुछ अंतर की आवश्यकता है। मैंने मल्टी-मॉड्यूल मैवेन प्रोजेक्ट्स के बारे में महसूस करने के लिए सोनाटाइप से मेवेन डेफिनिविटिव गाइड पढ़ा है, लेकिन मेरे सबसे महत्वपूर्ण सवालों में से एक का उत्तर नहीं दिया गया है: मैं कई मॉड्यूल/परियोजनाओं पर आम दृश्य-घटक कैसे साझा कर सकता हूं और उन्हें एकीकृत कर सकता हूं ग्राहक पर मैं बनाना चाहता हूं? सर्विस-लेयर बहुत स्पष्ट है लेकिन मैं यह नहीं समझ सकता कि jsp/jspf फ़ाइलों को कैसे साझा किया जाए और विशिष्ट ग्राहक-मॉड्यूल (जो तब सामान्य-मॉड्यूल पर निर्भर करता है) बनाते समय उन्हें कस्टम फ़ाइलों के साथ मर्ज करें।दो वेब के लिए जावा वेब एप्लिकेशन प्रोजेक्ट डेवलपमेंट

आप सामान्यतः इस्तेमाल किए गए कोड को केवल क्लोन करने से बचने का प्रयास कैसे करेंगे?

+0

आपके उत्तरों के लिए धन्यवाद! विशेष रूप से मेवेन निर्भरता प्लगइन उपयोगी प्रतीत होता है। मैं मेवेन वॉर प्लगइन और इसके ओवरले का उपयोग करके एक और समाधान पर आया हूं। फिर आप किसी अन्य युद्ध पर निर्भरता जोड़ सकते हैं और उस के कुछ हिस्सों का पुन: उपयोग कर सकते हैं (सामान्य युद्ध उदा।)। रिमोट रिसोर्स प्लगइन मुख्य रूप से लाइसेंस वितरण के लिए बनाया जाता है, लेकिन यह भी काम कर सकता है। – velaia

+0

आपको ऐसी टिप्पणियों को या तो उन उत्तरों में जोड़ना चाहिए जिन्हें आप संदर्भित कर रहे हैं या अपना मूल प्रश्न संपादित कर रहे हैं। इसके अलावा: "आपके उत्तरों के लिए धन्यवाद" कहने का स्टैक ओवरफ्लो संस्करण उन पर ऊपर तीर पर क्लिक कर रहा है, अल्थोग मौखिक धन्यवाद भी सराहना की जाती है :-) –

उत्तर

3

आप लाइब्रेरी परियोजना में आम घटकों रख दिया और के रूप में dependency:unpack या dependency:unpack-dependencies

जैसे का उपयोग कर की जरूरत है उन्हें खोल सकते हैं आप परियोजना लेआउट इस तरह होगा:

root 
|____ common-lib (jar, contains common java code) 
|____ common-gui (jar, contains only non-java stuff like js, jsp, css etc) 
|____ client1 (war) 
|____ client2 (war) 

client1 और client2 प्रत्येक आम-लिब के लिए एक नियमित compile निर्भरता के लिए होता है, लेकिन केवल आम-जीयूआई के लिए एक provided निर्भरता (यदि आप dependency:unpack का उपयोग यह करने के लिए नहीं है एक परियोजना निर्भरता सभी)

अब आप अपने ग्राहक परियोजनाओं के लिए इस तरह कोड जोड़ते हैं वह हो:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>unpack-common-gui-elements</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>unpack</goal> 
      </goals> 
      <configuration> 
       <artifactItems> 
        <artifactItem> 
         <groupId>com.yourcompany</groupId> 
         <artifactId>common-gui</artifactId> 
         <version>${project.version}</version> 
         <type>jar</type> 
         <!-- war assembly directory --> 
         <outputDirectory> 
          ${project.build.directory}/${project.build.finalName} 
         </outputDirectory> 
         <includes>**/*.jsp,**/*.css,**/*.js</includes> 
        </artifactItem> 
       </artifactItems> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

इस तरह आप फिर से उपयोग कर सकते हैं अपने घटकों लेकिन आप हमेशा अपने आप को चुन सकते हैं जो घटकों आप वितरितकिस ग्राहक को।

+0

यह एक और तरीका है और +1 भी उपयोगी हो सकता है। यह मुझे याद दिलाता है [मैवेन में परियोजनाओं में संसाधनों को कैसे साझा करें] (http://www.sonatype.com/people/2008/04/how-to-share-resources-across-projects-in-maven/)। –

4

मैं यह पता लगाने नहीं कर सकते jsp/jspf फ़ाइलें साझा करने के लिए कैसे और उन्हें कस्टम फ़ाइलों के साथ विलय जब विशिष्ट ग्राहक मॉड्यूल (जो तब आम मॉड्यूल पर निर्भर करता है) के निर्माण।

यह Overlays के लिए एक अच्छा उपयोग केस जैसा दिखता है।

+0

मैं सहमत हूं (+1) ... –

संबंधित मुद्दे