2012-08-30 48 views
5

我想問你使用Liferay SDK進行開發的最佳實踐。 我已經下載了SDK,我準備好了Eclipse,它可以工作,我可以創建新的Portlet並運行本地Liferay實例來測試它。是否可以將Liferay SDK放在與源代碼不同的位置?

這是我的情況 - 我擁有的所有源代碼都在Eclipse工作區中,目前它只是Portlet中的工作內容。

Liferay SDK我擁有與工作空間完全不同的位置。假設〜/ dev/liferay_sdk。 Eclipse工作區位於〜/工作區中。

在開始時,它不是那樣工作的。 Eclipse從某些原因無法找到或使用Liferay SDK。當我將Eclipse/Liferay配置中的「項目驗證」更改爲「忽略」時,「Liferay Plugin SDK無效」,它開始工作沒有問題。

發生下一個問題時,需要構建WAR例如。 在工作區的portlet目錄中存在「build.xml」文件。但是它裏面指的是另一個xml文件,它應該位於一個目錄中,而這個文件指向相對位置的更多東西等等。

簡而言之,它假定您擁有Liferay SDK內部的portlet等。 像「〜/ dev/liferay_sdk/portlets」。

我的問題是,我完全錯了,還是你可以建議我用這個最佳實踐?

我不想混用SDK和代碼,這聽起來不對。

感謝您的幫助!

回答

2

我認爲,最好的做法仍然是當您的portlet項目位於Liferay Plugins SDK目錄中時。例如,您可以利用Eclipse的Liferay IDE插件的所有優點。因爲據我瞭解,Liferay IDE不允許你在另一個位置擁有portlet項目。從Liferay SDK目錄內將項目導入Eclipse非常容易,這不是問題。

但是當我嘗試將portlet項目保存到Git存儲庫時,我也面臨同樣的問題。帶有符號鏈接的可能解決方案在每個系統上都無法正常工作。因此,我稍微修改了build.xml文件,以便能夠從任何目錄運行ant任務。對於portlet是類似的東西:

<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> 

請注意,您應該build.properties中定義屬性「liferay.sdk.home」,它應該是路徑Liferay的插件SDK。

至於其他類型的Liferay插件(主題,掛鉤等),您應該導入另一個構建文件來構建該類型的插件。例如,對於主題它將是:

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

希望你會明白。 :)但在做這樣的事情之前三思。

+0

嗨!是的,最後我發現了幾乎相同的解決方案,你在這裏暗示我。 它的工作原理。我無法想象現在可能出現這種解決方案的麻煩...... – stibi

+0

我可以想到的另一個缺點是升級到新版本的Liferay Portal(從而導致新版本的Liferay Plugins SDK)時缺乏向後兼容性。但現在情況並非如此,因爲版本5。2,6.0.6和6.1完全適用於此解決方案。 –

+0

好的,謝謝...我不會再拒絕,並在這裏與你的所有建議一起去。最後,那就是我所要求的。 – stibi

1

Liferay插件是在Liferay插件SDK中開發的,其名稱爲SDK出於很好的理由。

我沒有發現什麼不對的插件,SDK和togather捆綁,下面是幾個原因代碼:

如果你看到在github上Liferay的repository of plugins,你會發現所有樣本portlet和其它插件存儲在plugins-SDK中的相應文件夾中。

所以,如果你想開發Liferay的插件(帶或不帶IDE),最好的做法(的唯一有效的方式,我認爲)是有插件的各自的文件夾中創建的項目SDK喜歡裏面portlets的portlet項目文件夾,hooks文件夾內的鉤子項目等

如果您在此IDE中創建插件項目(Liferay項目)時使用了Liferay IDE,請指定SDK和服務器運行時,以及它在其中創建項目插件SDK並將.settings,.classpath & .project文件複製到創建的項目中。它不會像在其他項目中一樣爲eclipse創建項目。

希望我已經解釋清楚,這就是你想要的。

+1

嗨!感謝您的回覆。我明白了,但我不知道如何混合SDK和代碼。爲什麼是這樣?我不知道其他項目和工具的這種情況。我對Java很陌生,所以也許這在Java世界很常見,很難說:) – stibi

0

我已經與其他的答案很高興,這本來是可以通過在這些意見的分佈,而是一個單獨的答案給出了一些多種結構化選擇:

由於普拉卡什說,這不是真的不好做。除了他的回答之外,您不需要在工作區目錄中存放代碼。 Eclipse很高興把它放在文件系統的任何地方 - 因此,當你使用Eclipse時,你甚至不關心你的代碼是什麼(當你檢查它到版本控制 - 對吧? - 你實際上從來不需要關心。)

如果你想使用Liferay的OOTB ant腳本:它們的設置與你所描述的設置完全相同:在SDK目錄下工作,其實並不壞,但如果你不喜歡它,你只需要接受就可以如果不改變它,不需要修改build.xml(像Artem建議的那樣)。

另一個選擇是使用maven - 這也繞過了sdk(和Liferay IDE集成),所以你可以自由地將你的源代碼無論你喜歡什麼,讓maven完成剩下的工作。

我可以想象一些阿爾喬姆的建議相當深奧和罕見的問題(比如在暗示某些相對位置時提及自定義父主題),但我認爲這是非常小的,所以如果這對您有用:繼續。請記住,您沒有完成SDK所做的基本假設,因此您可能不得不改變違反假設的事情。如果你牢記這一點,我無法想象這太難了。

當然,你錯過的解決方案是包含構建的整潔處理。$ {username} .properties - 你必須有你自己的build.properties來定義$ {liferay.sdk.home}。如果你不是在一個團隊工作,沒關係。否則,你必須親自發明(並編寫代碼)或依靠全局參數來配置每個團隊成員。

+0

嗨!謝謝,爲我提供了另一條有用的信息。 是的,我在團隊中,我們正在開展我們的第一個Liferay項目。我不能強迫團隊去做一些棘手的事情,因爲我不喜歡某些東西,所以我很高興我的問題得到解答,我們將採用「Liferay路徑」,而不是將SDK放在代碼之外。 – stibi

相關問題