电脑什么网站可以做长图攻略,公众号 微网站开发,网站建设考虑的因素,wordpress+背景透明play 打包 模块几周前#xff0c;我迁移了Play#xff01; 框架 1.x版本的Deadbolt应用于Play 2平台#xff0c;并且对缺少有关创建模块的信息感到惊讶。 Play 1.x文档中详细介绍了该主题#xff0c;这使得创建模块非常简单。 显然#xff0c;需要做些事情-这是关于为Play… play 打包 模块 几周前我迁移了Play 框架 1.x版本的Deadbolt应用于Play 2平台并且对缺少有关创建模块的信息感到惊讶。 Play 1.x文档中详细介绍了该主题这使得创建模块非常简单。 显然需要做些事情-这是关于为Play 2创建模块和插件的三部分系列文章的第一篇。 重要的是要注意这不是权威指南而是我在处理自己的模块时所使用的信息和技术的集合。 我假设您已经安装了Play 2如果没有请直接访问http://www.playframework.org/documentation/2.0/Installing 以获取有关如何进行设置的详细信息。 在第一部分中我们将介绍创建和发布模块以及添加示例应用程序的基础知识。 接下来的两部分将更深入地介绍插件拦截器标签和其他有用的工具。 首先简要介绍一下模块和库之间的区别。 在Play 1.x中使用“ play new-module”创建了一个模块并通过模块存储库进行分发。 在Play 1.1之前模块都是通过application.conf条目控制的并且库是在本地添加的。 从Play 1.2开始模块和库都通过基于Ivy的依赖关系管理机制进行控制。 不过在这两种情况下都有一个明确的模块概念与Play紧密集成遵循Play的包装结构等约定和一个库一个通用的第三方库。 在播放2中线条模糊到一定程度。 现在通过Ivy或Maven模块以与库相同的方式分发并且包结构可以是任意的因此您可以拥有传统的com.example.whatever结构。 从这个角度来看模块和库之间的唯一真正区别是模块直接使用Play API。 其次关于语言的说明。 由于Play 2本身支持Java和Scala因此您可以使用任何一种语言来实现模块。 如果模块具有自己的应用程序可以使用的API则Java和Scala之间的出色互操作性意味着-在大多数情况下您所选择的语言与使用API的应用程序无关。 1.入门 作为简单的介绍我们将创建一个基本的日志记录模块该模块将遵循行业最佳实践将输出写入控制台窗口。 这个模块称为mylogger因为它是星期一而我现在并不觉得很有创意。 该模块主要将用Java编写。 您可以将Play 2模块视为是Play 2应用程序其中缺少一些文件。 因此您可以按照与应用程序相同的方式来创建模块。 转到或创建用于保存项目的目录然后使用“播放新的Mylogger”创建应用。 出现提示时选择选项2以创建一个简单的Java应用程序。 stevehex:/tmp$ play new mylogger_ __ __ | | __ _ _ _| |
| _ \| |/ _ | || |_|
| __/|_|\____|\__ (_)
|_| |__/play! 2.0, http://www.playframework.orgThe new application will be created in /tmp/myloggerWhat is the application name?myloggerWhich template do you want to use for this new application?1 - Create a simple Scala application2 - Create a simple Java application3 - Create an empty project 2OK, application mylogger is created.Have fun! 因为我们将在模块旁边有一个示例应用程序所以我们将稍微更改目录结构。 目前它看起来像这样 mylogger
– app
– conf
– project
– public
– target
– .gitignore
– README 在mylogger目录中创建两个新目录项目代码和示例。 将上面列出的所有文件复制到项目代码目录中。 您现在应该拥有 mylogger
– samples
– project-code– app– conf– project– public– target– .gitignore– README conf目录包含两个文件-路由和application.conf。 – Play必须存在application.conf才能将mylogger /项目代码识别为Play应用程序因此我们无法删除它但可以删除其中包含的所有内容。 模块需要的任何配置都应添加到“实际”应用程序的application.conf中。 –必须删除路由*。 如果您不这样做它可能会/将取代使用它的任何应用程序的路由文件这是一件坏事主要是因为什么都不起作用。 清空application.conf并删除路由后在项目代码中键入“ play”以启动Play控制台。 stevehex:/tmp/mylogger/project-code$ play
[info] Loading project definition from /tmp/mylogger/project-code/project
[info] Set current project to mylogger (in build file://tmp/mylogger/project-code/)_ __ __ | | __ _ _ _| |
| _ \| |/ _ | || |_|
| __/|_|\____|\__ (_)
|_| |__/play! 2.0, http://www.playframework.org Type help play or license for more information.Type exit or use CtrlD to leave this console.[mylogger] $ 现在我们有了一个有效的Play 2模块请注意它什么也不做。 如果您使用的是IDE那么这是创建项目的好时机-但是本教程与IDE无关因此如果需要可以使用位于http://www.playframework.org/documentation/2.0/IDE的指南。去做这个。 2.添加一些功能 如上所述Play 2模块可以具有更传统的com.example.package包结构但是默认的Play应用程序具有传统的app / controllersapp / models等结构。 我们现在将其保留并在本教程的后续部分中进行更改。 2.1刀耕火种 在app文件夹中我们具有“ play new”命令为我们创建的以下结构 app
– controllers– Application.java
– views– index.scala.html– main.scala.html 对于此模块的初始迭代我们不需要任何视图因此您可以删除视图包。 您也可以删除Application.java因为我们是从头开始编写的。 2.2添加一些模块代码 在controllers包中创建一个名为MyLogger.java的新类。 它不需要扩展或实现任何东西它包含一个方法 package controllers;/*** author Steve Chaloner*/
public class MyLogger
{public static void log(String message){System.out.println(MyLogger: message);}
} 2.3喝啤酒 您刚刚编写了一个模块。 去喝啤酒。 2.4啤酒后实现 当您凝视着现在空荡荡的玻璃杯时充满创造力的喜悦和即将来临的全行业声誉的感觉您可能会意识到实际上没有人能进入您的模块因为它位于您的计算机上。 您需要发布它。 3.发布并受到谴责 对于此示例我们将发布到您的本地存储库。 在Play安装的根目录中有一个存储库目录这是您首先推送模块的位置。 发布之前请始终确保已运行“干净”否则从源树中删除的某些类/文件可能仍以编译形式存在并最终出现在模块jar文件中。 如果该类与您实际应用程序中的类匹配则可以代替您的实际类来调用它。 糟透了。 在Play控制台中使用“ clean”然后使用“ publish-local”打包您的模块并将其发布到本地存储库 [mylogger] $ publish-local
[info] Updating {file:/tmp/mylogger/project-code/}mylogger...
[info] Packaging /tmp/mylogger/project-code/target/scala-2.9.1/mylogger_2.9.1-1.0-SNAPSHOT-sources.jar ...
[info] Done packaging.
[info] Wrote /tmp/mylogger/project-code/target/scala-2.9.1/mylogger_2.9.1-1.0-SNAPSHOT.pom
[info] Done updating.
[info] :: delivering :: mylogger#mylogger_2.9.1;1.0-SNAPSHOT :: 1.0-SNAPSHOT :: release :: Mon Mar 19 20:57:26 CET 2012
[info] delivering ivy file to /tmp/mylogger/project-code/target/scala-2.9.1/ivy-1.0-SNAPSHOT.xml
[info] Compiling 1 Java source to /tmp/mylogger/project-code/target/scala-2.9.1/classes...
[info] Generating API documentation for main sources...
model contains 4 documentable templates
[info] Packaging /tmp/mylogger/project-code/target/scala-2.9.1/mylogger_2.9.1-1.0-SNAPSHOT.jar ...
[info] Done packaging.
[info] API documentation generation successful.
[info] Packaging /tmp/mylogger/project-code/target/scala-2.9.1/mylogger_2.9.1-1.0-SNAPSHOT-javadoc.jar ...
[info] Done packaging.
[info] published mylogger_2.9.1 to /home/steve/development/play/play-2.0/framework/../repository/local/mylogger/mylogger_2.9.1/1.0-SNAPSHOT/poms/mylogger_2.9.1.pom
[info] published mylogger_2.9.1 to /home/steve/development/play/play-2.0/framework/../repository/local/mylogger/mylogger_2.9.1/1.0-SNAPSHOT/jars/mylogger_2.9.1.jar
[info] published mylogger_2.9.1 to /home/steve/development/play/play-2.0/framework/../repository/local/mylogger/mylogger_2.9.1/1.0-SNAPSHOT/srcs/mylogger_2.9.1-sources.jar
[info] published mylogger_2.9.1 to /home/steve/development/play/play-2.0/framework/../repository/local/mylogger/mylogger_2.9.1/1.0-SNAPSHOT/docs/mylogger_2.9.1-javadoc.jar
[info] published ivy to /home/steve/development/play/play-2.0/framework/../repository/local/mylogger/mylogger_2.9.1/1.0-SNAPSHOT/ivys/ivy.xml
[success] Total time: 4 s, completed Mar 19, 2012 8:57:28 PM 如果您查看$ PLAY_HOME / repository / local现在将看到一个名为mylogger的目录。 由于我们没有提供组织名称因此该组织与模块本身具有相同的名称。 进入mylogger您将看到工件– mylogger_2.9.1。 文件名的2.9.1部分来自Play本身并且似乎是版本控制。 如果有人对此有更多了解请发表评论并告诉我。 在mylogger_2.9.1内部我们具有模块版本在本例中为1.0-SNAPSHOT而该版本又包含jar文件源jarMaven和Iyy信息等。 所有这些信息从何而来 它基于project / Build.scala文件。 在这里您可以提供模块的名称组织版本和其他各种信息。 目前我们将保持原样但是随着我们对某些问题的深入了解此非常重要的文件将得到更新。 4.提供样品 您可以编写世界上最好最令人难以置信的有用模块但是如果没有示例应用程序来a展示它的工作原理b展示它的工作原理那么您将难以令人信服。 这就是为什么我们在最初创建模块时将目录结构改回原来的原因。 打开另一个终端然后转到mylogger / samples目录-现在该展示mylogger可以做什么。 4.1一个示例应用程序是一个Play应用程序 由于我们正在编写一个Play模块因此有必要提供一个Play应用程序作为示例。 现在我们在mylogger /示例中使用“播放新的mylogger-示例”创建示例应用程序。 同样选择选项2来制作一个简单的Java应用程序。 4.2声明依赖 为了使用mylogger我们必须在mylogger-sample / project / Build.scala中为其声明一个依赖项。 打开此文件然后更改 val appDependencies Seq(// Add your project dependencies here,) 至 val appDependencies Seq(mylogger % mylogger_2.9.1 % 1.0-SNAPSHOT) 您可以看到这与mylogger / mylogger_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(resolvers Local Play Repository at file://path/to/play-2.0/repository/local) 但更改路径以适合您的本地安装 在mylogger / samples / mylogger-sample目录中使用“ play”启动Play控制台。 如果使用“ dependencies”命令您将看到mylogger现在是应用程序的依赖项。 重要的提示 自从我们在更改Build.scala之后启动了Play控制台以来所做的更改会自动被提取。 如果在控制台打开时更改此文件请使用“重新加载”以确保使用了更改。 4.2使用模块 在您新的默认Play应用程序中我们将向控制器/Application.java添加一行以调用MyLogger package controllers;import play.mvc.Controller;
import play.mvc.Result;
import views.html.index;public class Application extends Controller
{public static Result index(){MyLogger.log(Heres my log message);return ok(index.render(Your new application is ready.));}
} 请注意我们不需要导入MyLogger因为它也在controllers软件包中。 “运行”该应用程序然后转到http// localhost9000。 片刻之后页面将呈现出来您将在控制台中看到 [info] play - Application started (Dev)
MyLogger: Heres my log message 重新加载页面几次您会看到每次都出现日志消息。 5.再喝一杯啤酒 恭喜您现在有了一个模块和一个工作示例。 它实际上并没有为您的示例应用程序增加多少价值但这将在第2部分中得到解决。同时将头放在冰箱上为自己准备另一杯啤酒。 您可以在此处下载此示例的完整源代码 参考 Play 2的编写模块第1部分在Objectify博客上从我们的JCG合作伙伴 Steve Chaloner获得帮助。 翻译自: https://www.javacodegeeks.com/2012/04/writing-modules-for-play-2-part-1-get.htmlplay 打包 模块