1. 程式人生 > >play framework如何進行模組化開發--學習筆記(借鑑同事、部落格等資料自己試驗通過!)

play framework如何進行模組化開發--學習筆記(借鑑同事、部落格等資料自己試驗通過!)

1.第一步:先建立一個play專案,我建立play專案時,進入的目錄是:..\playframework\samples-and-tests\,然後開始建立工作。

play new  app

2.第二步:建立一個公共模組

play new-module model

建立了以後,版本預設為0.1,開啟model\conf\dependencies.yml即可看到。如我建立的檔案如下: 

self: play -> model 0.1

require:
    - play

3.第三步:在model中增加任意程式碼,程式碼結構等同play的應用程式,比如新增一個control類、新增一個model類,so easy...

4.第四步:如何在app中引用model模組。

開啟app\conf\dependencies.yml,不要搞錯了啊,兄弟...,我的檔案配置如下,添加了紅色部分

# Application dependencies


require:
    - play
    - customerModules  -> model 0.1


repositories:
    - playLocalTestModulesRep:
        type: local
        artifact: ${application.path}/../[module]
        contains:
            - customerModules -> *


其中customerModules 是自定義的名字,下面要用到的如- customerModules -> *”,model 0.1代表模組及版本,playLocalTestModulesRep,這個也可以隨便你定義,type,這個是說明模組程式碼在本地,artifact是標記路徑,照寫就好,當然你也可以寫絕對路徑,例如:"D:/play/workspace/modulecoupon",千萬注意斜槓的寫法啊,寫錯了就悲劇了,用雙引號括起來,contains標記包含哪些內容,這裡是全包含。

千萬注意一個東西:artifact: ${application.path}/../[module],其中/../

這個含義是上一級目錄的意思,我在這塊弄了半天,一直提示找不到模組,模組路徑出錯。

例如:artifact: ${application.path}/../[module],最終路徑指playframework/model下的模組。

artifact: ${application.path}/[module],最終路徑指playframework/app/model下的模組。

5.第五步:執行一下命令:play dependencies app ,此時新增依賴模組到專案中model會以連結資料夾的形式存在於app中,執行完以後如果正確就生成一個資料夾,但是還不能顯示成連結資料夾的形式,這時要做第六步。其中還有一個檔案千萬不要弄丟了,本操作會在app專案下生成一個modules\app的檔案,這裡面寫的是模組的路徑,其中寫的內容最好寫相對路徑,便於程式的移植、部署。有時候我是在是分不清,到底是把困難隔過去好,還是一追到底好。讀書的話,把讀不懂的隔過去,接著看,看多了,前面不懂的地方自然而然的就懂了。如果搞程式,攻難題,真不好判斷哪種好,攻關總是要花費巨量的時間···

6.第六步:play eclipsify app ,然後匯入到eclipse裡即可。如果之前你已經匯入到eclipse裡了,這裡必須再匯入一次,然後重新整理一下專案即可。

7.以後對modelapp執行的任何修改都可以直接在app裡操作。包括新增類檔案等。

8.全部開發完,可以執行play build-module model,將其打包釋出,分享給其他專案使用。

注意事項:
1.play dependencies app ,有時候會發現這條命令執行失敗,可以增加引數----verbose,顯示詳細的載入資訊,定位錯誤,可能會很長,主要看最下邊的一些報警、錯誤資訊。如果失敗,
 
2.如果已經增加依賴模組,之後又想取消,除了修改denpendencies.yml,再執行一遍play dependencies app --sync即可。
 
3.repositories:即可以來源與本地資料夾,也可以來源maven倉儲或者是git路徑
 
4.如果不是開發play系統外掛功能,請不要處理model專案中的src資料夾,此資料夾裡的內容在build-module時,會編譯成jar包,作為play的外掛,在應用程式啟動時執行。

模組的引入:

如果你上面的步驟都走完而且都正確,play啟動時就自動載入了,否則需要在application.conf中新增一句話。

# Additional modules
# ~~~~~

#module.coupon=${application.path}/../coupon

模組的構成(這裡引用別人的文章): 
由下面的內容可以看到,模組的構成和一般的play應用程式很類似。都有models、views、tags、controllers、conf目錄。 
其中的區別就是module中不應該有application.conf檔案。而在模組的根目錄中多出來2個檔案,1,build.xml:ant檔案,用來編譯模組,並根據編譯後的程式碼生成以模組名字命名的jar包,放置到lib目錄; 2,commands.py:python檔案,可以在裡面增加一些特殊的指定,比如play firstmodule:hello 
其他額外需要的jar包也放置在lib目錄,在模組被載入的時候,這裡的所有jar包會自動放置到classpath中。
src資料夾放置模組的內容,包含模組的邏輯和模組外掛的程式碼,同時包含play.plugins檔案,play.plugins檔案中包含一行內容1000:play.modules.spring.SpringPlugin,前面的數字程式碼應用程式載入模組時的順序,數字越小,越早被載入。後半部分程式碼模組外掛的入口。 
當使用Play new-module命令來建立模組的時候,會自動建立上面的所有檔案和資料夾,如果其中的部分檔案、資料夾不需要,那麼最好刪除使得模組看起來更加容易理解。

檔案如下:

app/controllers/firstmodule
app/models/firstmodule
app/views/firstmodule
app/views/tags/firstmodule
build.xml
commands.py
conf/messages
conf/routes
lib
src/play/modules/firstmodule/MyPlugin.java
src/play.plugins