您的位置:首页 > 其它

play framework如何进行模块化开发--学习笔记(借鉴同事、博客等资料自己试验通过!)

2015-07-27 14:53 621 查看
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],其中/../这个含义是上一级目录的意思,我在这块弄了半天,一直提示找不到模块,模块路径出错。

例如:[b]artifact: ${application.path}/../[module],最终路径指playframework/model下的模块。[/b]

[b][b]artifact: ${application.path}/[module],最终路径指playframework/app/model下的模块。

[/b][/b]

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息