2012-08-30 11 views
5

मैं आपको Liferay SDK के साथ विकास के साथ सर्वोत्तम प्रथाओं के लिए पूछना चाहता हूं। मेरे पास एसडीके डाउनलोड है, मेरे पास एक्लिप्स तैयार है, यह काम करता है, मैं नए पोर्टल बना सकता हूं और स्थानीय लिफ़ेरी इंस्टेंस को परीक्षण करने के लिए चला सकता हूं।क्या स्रोत कोड की तुलना में अलग-अलग स्थानों में लिफ़ेरे एसडीके होना संभव है?

यहां मेरी स्थिति है - मेरे पास मौजूद सभी स्रोत कोड ग्रहण कार्यक्षेत्र में हैं, वर्तमान में यह केवल पोर्टल है जो मैं काम कर रहा हूं।

लिफ़ेरे एसडीके मेरे पास वर्कस्पेस की तुलना में पूरी तरह से अलग स्थान है। मान लें ~/dev/liferay_sdk। ग्रहण कार्यक्षेत्र ~/वर्कस्पेस में स्थित है।

भिखारी पर, यह इस तरह काम नहीं कर रहा था। किसी कारण से ग्रहण Liferay एसडीके नहीं मिल या उपयोग कर सकते हैं। जब मैंने ग्रहण/Liferay कॉन्फ़िगरेशन में "परियोजना सत्यापन" को "अनदेखा" करने के लिए "Liferay प्लगइन एसडीके मान्य नहीं है" बदल दिया, तो यह बिना किसी समस्या के काम करना शुरू कर दिया।

उदाहरण के लिए WAR बनाने की आवश्यकता होने पर अगली समस्या खुश होती है। वर्कस्पेस में पोर्टल निर्देशिका में "build.xml" फ़ाइल मौजूद है। लेकिन इसके अंदर एक और एक्सएमएल फ़ाइल को संदर्भित किया जाता है, जो एक निर्देशिका को स्थापित किया जाना चाहिए, और यह अपेक्षाकृत स्थान में और अधिक चीज़ों को संदर्भित करता है।

संक्षेप में, यह मानता है कि आपके पास लिफ़ेरे एसडीके के अंदर पोर्टल आदि हैं। "~/dev/liferay_sdk/portlets" की तरह।

मेरा सवाल है, क्या मैं पूरी तरह गलत हूं, या क्या आप मुझे इसके साथ सबसे अच्छा अभ्यास सुझा सकते हैं?

मैं एसडीके और कोड मिश्रण नहीं करना चाहता, यह मेरे लिए गलत लगता है।

मदद के लिए धन्यवाद!

उत्तर

2

मुझे लगता है कि सबसे अच्छा अभ्यास तब भी है जब आपकी पोर्टल परियोजनाएं Liferay प्लगइन्स एसडीके निर्देशिका के अंदर स्थित होती हैं।इस तरह आप उदाहरण के लिए ग्रहण के लिए Liferay आईडीई प्लगइन के सभी फायदे ले सकते हैं। क्योंकि जहां तक ​​मैं समझता हूं कि लिफ़ेरे आईडीई आपको किसी अन्य स्थान पर पोर्टल परियोजनाएं रखने की अनुमति नहीं देगा। Liferay एसडीके निर्देशिका के अंदर से ग्रहण करने के लिए परियोजनाओं को आयात करना बहुत आसान है, और यह समस्या नहीं है।

लेकिन मुझे गिट भंडार में पोर्टलेट प्रोजेक्ट को सहेजने की कोशिश करते समय भी उसी तरह की समस्या का सामना करना पड़ा। प्रतीकात्मक लिंक के साथ संभावित समाधान हर प्रणाली पर सही ढंग से काम नहीं करते थे। इस प्रकार मैंने किसी भी निर्देशिका से चींटी कार्यों को चलाने में सक्षम होने के लिए build.xml फ़ाइल को थोड़ा संशोधित किया।

<project name="your-portlet" basedir="." default="deploy"> 
    <property file="build.properties" /> 

    <property name="project.dir" value="${liferay.sdk.home}" /> 

    <import file="${project.dir}/build-common-plugin.xml" /> 
</project> 

सूचना है कि आप संपत्ति "liferay.sdk.home" build.properties में परिभाषित करना चाहिए और यह Liferay प्लगइन्स एसडीके के लिए पथ होना चाहिए: portlets के लिए यह ऐसा ही कुछ था।

अन्य प्रकार के लिफ़ेयर प्लगइन्स (थीम, हुक इत्यादि) के लिए आपको उस प्रकार की प्लगइन बनाने के लिए एक और बिल्ड फ़ाइल आयात करनी चाहिए। उदाहरण के लिए, विषयों के लिए यह होगा:

<import file="${project.dir}/themes/build-common-theme.xml" /> 

आशा है कि आपको यह विचार मिलेगा। :) लेकिन ऐसा कुछ करने से पहले दो बार सोचो।

+0

हाय! हां, अंततः मुझे लगभग उसी समाधान मिलते हैं जैसा कि आप मुझे यहां सुझाव देते हैं। और यह काम करता है। मैं इस समाधान के साथ अभी संभव संभावित परेशानियों की कल्पना नहीं कर सकता ... – stibi

+0

लिफ़ेरे पोर्टल (और इस प्रकार लिफ़ेरे प्लगइन्स एसडीके के एक नए संस्करण में) के उन्नयन के दौरान मैं एक और नुकसान की पिछली संगतता की कमी महसूस कर सकता हूं। लेकिन अभी यह मेरे लिए मामला नहीं है क्योंकि संस्करण 5।2, 6.0.6 और 6.1 इस समाधान के साथ पूरी तरह से काम करता है। –

+0

ठीक है, धन्यवाद ... मैं अब और इनकार नहीं करूँगा और यहां आपकी सभी सलाहओं के साथ मिलकर जाऊंगा। अंत में, मैंने यही पूछा था। – stibi

1

Liferay प्लगइन्स एक बहुत अच्छे कारण के लिए, Liferay प्लगइन्स एसडीके के अंदर विकसित कर रहे हैं इसके बुलाया एसडीके

मैं कुछ भी प्लग-इन-SDK और कोड togather बंधे, नीचे कुछ कारणों की वजह हैं के साथ गलत नहीं मिलता:

आप GitHub पर Liferay repository of plugins देखते हैं, आप सभी नमूना portlets और अन्य मिलेगा प्लगइन्स प्लगइन-एसडीके के अंदर अपने संबंधित फ़ोल्डरों में संग्रहित होते हैं।

तो तुम Liferay प्लगइन्स (के साथ या आईडीई) के बिना विकसित करने के लिए चाहते हैं, तो सबसे अच्छा अभ्यास (केवल कारगर तरीका मुझे लगता है कि) प्लग इन की संबंधित फ़ोल्डरों के अंदर बनाई गई परियोजनाओं के लिए portlets अंदर portlet परियोजनाओं की तरह SDK है फ़ोल्डर, हुक परियोजना के अंदर hooks फ़ोल्डर आदि

आप Liferay IDE का इस्तेमाल किया है, तो जब आप एक प्लगइन परियोजना (Liferay परियोजना) इस IDE में आप एसडीके और सर्वर क्रम तथा उसके द्वारा यह निर्दिष्ट बनाने के अंदर परियोजना बनाता है आपके प्लगइन्स एसडीके और बनाई गई परियोजना के अंदर .settings, .classpath & .project फ़ाइल कॉपी करता है। यह आपके कार्यक्षेत्र के अंदर प्रोजेक्ट नहीं बनाता है क्योंकि ग्रहण आमतौर पर अन्य परियोजनाओं के लिए करता है।

आशा है कि मैंने इसे स्पष्ट रूप से समझाया है और यह वही था जो आप चाहते थे।

+1

हाय! जवाब के लिए धन्यवाद। मुझे यह मिल गया है, लेकिन मैं बस किसी भी तरह एसडीके और कोड मिश्रण पसंद नहीं है। ऐसा क्यों है? मैं अन्य परियोजनाओं और उपकरणों से ऐसी चीज नहीं जानता। मैं जावा के लिए काफी नया हूं, तो शायद यह जावा दुनिया में आम है, मेरे लिए कहना मुश्किल है :) – stibi

0

मैं पहले से ही अन्य उत्तर काफी खुश हूं, यह उन पर टिप्पणी के माध्यम से वितरित कर सकता है, लेकिन एक अलग जवाब कुछ और संरचना विकल्प देता है:

प्रकाश कहते हैं, यह वास्तव में ऐसा करने के लिए बुरा नहीं है । उनके उत्तर के अलावा, आपको वर्कस्पेस निर्देशिका में अपना कोड रखने की आवश्यकता नहीं है। ग्रहण इसे फाइल सिस्टम में कहीं भी खुश करने में प्रसन्न है - इस प्रकार जब आप ग्रहण के साथ काम करते हैं तो आप यह भी ध्यान नहीं देते कि आपका कोड कहां है (और जैसा कि आप इसे संस्करण नियंत्रण में देखते हैं - सही? - आपको वास्तव में देखभाल करने की आवश्यकता नहीं है।

यदि आप लिफ़ेरे की ओओटीबी चींटी स्क्रिप्ट का उपयोग करना चाहते हैं: वे आपके द्वारा वर्णित सेटअप की दिशा में तैयार हैं: एसडीके निर्देशिका में कार्य करें। यह वास्तव में बुरा नहीं है, लेकिन अगर आपको यह पसंद नहीं है, तो आपको बस यह स्वीकार करना होगा कि आप इसे स्वीकार कर सकते हैं इसे बदलने के बिना build.xml के साथ काम नहीं करते हैं (जैसे आर्टेम सुझाव देता है)

एक और विकल्प मैवेन का उपयोग करना है - यह एसडीके (और लिफ़ेरे आईडीई एकीकरण) को भी छोड़ देता है, इसलिए आप फिर से अपना स्रोत कोड डाल सकते हैं आपको पसंद है और मैवेन बाकी करते हैं।

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

बेशक, उस समाधान के साथ आप जो चूकते हैं वह निर्माण सहित साफ-सुथरा प्रबंधन है। $ {Username} .properties - आपको अपनी खुद की build.properties रखना होगा जो $ {liferay.sdk.home} को परिभाषित करते हैं। यदि आप एक टीम में काम नहीं कर रहे हैं, तो यह ठीक है। अन्यथा आपको इसे स्वयं (और इसे कोड) का आविष्कार करना होगा या प्रत्येक टीम के सदस्य के साथ कॉन्फ़िगर करने के लिए वैश्विक मानकों पर भरोसा करना होगा।

+0

हाय! धन्यवाद, मेरे लिए उपयोगी सूचनाओं का एक और टुकड़ा। हां, मैं टीम में हूं, हम अपनी पहली लिफ़ेरे परियोजना पर काम कर रहे हैं। मैं टीम को कुछ मुश्किल करने के लिए मजबूर नहीं कर सकता क्योंकि मुझे कुछ पसंद नहीं है, इसलिए मुझे खुशी है कि मेरे सवालों का जवाब दिया गया था और हम "लिफ़ेरे पथ" के साथ जाएंगे और एसडीके को कोड से बाहर नहीं रखेंगे। – stibi

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