1.新建工程 logme-plugin
play new logme-plugin .... play .... eclipse with-source=true ....
2.导入eclipse
3.配置
3.1.删除conf/routes文件
3.2.清空conf/application.conf文件内容
3.3.删除app/views目录
3.4.删除app/controllers/Application.java文件
4.代码
在controllers下新建LogMe类,内容如下:
package controllers;
public class LogMe {
public static void log(String message){
System.out.println(message);
}
}
5.发布模块
[logme-plugin] $ publish-local [info] Packaging /home/jim/source/j2ee-apps/play-projects/demo-workspaces/logme-plugin/target/scala-2.9.1/logme-plugin_2.9.1-1.0-SNAPSHOT-sources.jar ... [info] Done packaging. [info] Generating API documentation for main sources... [info] Compiling 1 Java source to /home/jim/source/j2ee-apps/play-projects/demo-workspaces/logme-plugin/target/scala-2.9.1/classes... [info] Wrote /home/jim/source/j2ee-apps/play-projects/demo-workspaces/logme-plugin/target/scala-2.9.1/logme-plugin_2.9.1-1.0-SNAPSHOT.pom [info] :: delivering :: logme-plugin#logme-plugin_2.9.1;1.0-SNAPSHOT :: 1.0-SNAPSHOT :: release :: Sat Aug 11 10:31:46 CST 2012 [info] delivering ivy file to /home/jim/source/j2ee-apps/play-projects/demo-workspaces/logme-plugin/target/scala-2.9.1/ivy-1.0-SNAPSHOT.xml [info] Packaging /home/jim/source/j2ee-apps/play-projects/demo-workspaces/logme-plugin/target/scala-2.9.1/logme-plugin_2.9.1-1.0-SNAPSHOT.jar ... [info] Done packaging. model contains 4 documentable templates [info] API documentation generation successful. [info] Packaging /home/jim/source/j2ee-apps/play-projects/demo-workspaces/logme-plugin/target/scala-2.9.1/logme-plugin_2.9.1-1.0-SNAPSHOT-javadoc.jar ... [info] Done packaging. [info] published logme-plugin_2.9.1 to /opt/development/j2ee/play/2.0.2/play-2.0.2/framework/../repository/local/logme-plugin/logme-plugin_2.9.1/1.0-SNAPSHOT/poms/logme-plugin_2.9.1.pom [info] published logme-plugin_2.9.1 to /opt/development/j2ee/play/2.0.2/play-2.0.2/framework/../repository/local/logme-plugin/logme-plugin_2.9.1/1.0-SNAPSHOT/jars/logme-plugin_2.9.1.jar [info] published logme-plugin_2.9.1 to /opt/development/j2ee/play/2.0.2/play-2.0.2/framework/../repository/local/logme-plugin/logme-plugin_2.9.1/1.0-SNAPSHOT/srcs/logme-plugin_2.9.1-sources.jar [info] published logme-plugin_2.9.1 to /opt/development/j2ee/play/2.0.2/play-2.0.2/framework/../repository/local/logme-plugin/logme-plugin_2.9.1/1.0-SNAPSHOT/docs/logme-plugin_2.9.1-javadoc.jar [info] published ivy to /opt/development/j2ee/play/2.0.2/play-2.0.2/framework/../repository/local/logme-plugin/logme-plugin_2.9.1/1.0-SNAPSHOT/ivys/ivy.xml [success] Total time: 3 s, completed 2012-8-11 10:31:48 [logme-plugin] $
6.为logme-demo设置依赖
6.1.修改依赖设置
修改project/build.scala文件,找到
val appDependencies = Seq( // Add your project dependencies here, )
修改成
val appDependencies = Seq( // Add your project dependencies here, "logme-plugin" % "logme-plugin_2.9.1" % "1.0-SNAPSHOT" )
找到
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings( // Add your own project settings here )
修改成
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings( // Add your own project settings here resolvers += "Local Play Repository" at "file://$PLAY_HOME/repository/local" )
其中的$PLAY_HOME我是定义的环境变量,指向了PLAY目录
6.2.重设依赖关系
[logme-demo] $ dependencies [info] :: delivering :: logme-demo#logme-demo_2.9.1;1.0-SNAPSHOT :: 1.0-SNAPSHOT :: release :: Sat Aug 11 11:20:17 CST 2012 [info] delivering ivy file to /home/jim/source/j2ee-apps/play-projects/demo-workspaces/logme-plugins/logme-demo/target/scala-2.9.1/ivy-1.0-SNAPSHOT.xml Here are the resolved dependencies of your application: +-------------------------------------------------------------------+---------------------------------------------------------+------------------------------+ | Module | Required by | Note | +-------------------------------------------------------------------+---------------------------------------------------------+------------------------------+ | logme-plugin:logme-plugin_2.9.1:1.0-SNAPSHOT | logme-demo:logme-demo_2.9.1:1.0-SNAPSHOT | As logme-plugin_2.9.1.jar | +-------------------------------------------------------------------+---------------------------------------------------------+------------------------------+ | play:play_2.9.1:2.0.2 | logme-plugin:logme-plugin_2.9.1:1.0-SNAPSHOT | As play_2.9.1.jar | | | logme-demo:logme-demo_2.9.1:1.0-SNAPSHOT | | .... [logme-demo] $
7.使用logme-plugin模块
打开logme-demo工程的controllers.Application
增加对LogMe的调用
package controllers; import play.*; import play.mvc.*; import views.html.*; public class Application extends Controller { public static Result index() { LogMe.log("hello world"); return ok(index.render("Your new application is ready.")); } }注意,里面没有import LogMe类。
8.测试logme-plugin
控制台进入到logme-demo,运行工程
jim@jim-laptop:~/source/j2ee-apps/play-projects/demo-workspaces/logme-plugins/logme-demo$ play run
[info] Loading project definition from /home/jim/source/j2ee-apps/play-projects/demo-workspaces/logme-plugins/logme-demo/project
[info] Set current project to logme-demo (in build file:/home/jim/source/j2ee-apps/play-projects/demo-workspaces/logme-plugins/logme-demo/)
[info] Updating {file:/home/jim/source/j2ee-apps/play-projects/demo-workspaces/logme-plugins/logme-demo/}logme-demo...
[info] Done updating.
--- (Running the application from SBT, auto-reloading is enabled) ---
[info] play - Listening for HTTP on port 9000...
(Server started, use Ctrl+D to stop and go back to the console...)
打开浏览器,访问 http://localhost:9000能打开默认页面,你可以在控制台上看到显示的日志信息
[info] play - Application started (Dev) hello world
我们刚才记录的日志插件工作了。
现在还有个小问题,eclipse里总是显示LogMe类没有找到,有两个办法可以解决这个问题
a.你可以把把logme-plugin加入logme-demo的java build path的projects里.
b.把发布后的logme-plugin_2.9.1.jar加入到library里也可以,反正eclipse不参与编译,只要eclipse不提示有错就ok了。
