github如何创建子模块
在Play 2中,情况再次发生变化,并且依赖机制与Maven和Ivy兼容。 我能听到企业上下欢喜的气氛。
但是,除非您碰巧托管了自己的Maven / Ivy回购仓库,或者感觉像是要破解Play生成的自动生成的工件模型,否则这仍然无法帮助您获得应有的荣耀和名声。 使用GitHub的Pages功能,在Play 2模块具有正式发布机制之前,需要手头的帮助。 很简单,我们将使用Play的publish-local任务在正确的目录结构中生成我们需要的所有文件,然后将该结构直接复制到GitHub页面中。 在GitHub中完成初始设置后,可以在不到一分钟的时间内完成这种发布。
在GitHub中创建存储库
例如,如果您的GitHub用户名是foo ,则创建一个名为foo .github.com的存储库会使您进入Pages –您在此处提交的内容将在http://foo.github.com上提供。 在这里显示文件没有GitHub的优点-您提交的内容是以其本机形式提供的。 提交一个HTML文件(我们称其为bar.html),然后将浏览器指向http://foo.github.com/bar.html,您将看到呈现HTML,而不是其来源。 这使它非常适合公开以原始格式表示的文件,例如,包含Play 2模块的jar文件。
因此,继续创建一个.github.com存储库,并将其克隆到您的工作区中,并CD入其中。 在这里,您可以复制(类似–稍后请看)一个存储库。
为了使事情变得更好,您应该创建的第一个目录是releases 。 如果您还想添加快照目录,请在此级别执行。
注意:首次在GitHub中创建存储库时,最多可能需要10分钟才能使它可用。 如果您尚未更改电子邮件首选项,则准备就绪后,您应该会收到一条通知。 同时,这不会阻止您提交到存储库。
在本地发布文件
让我们假设你的模块名称是手摇作为工件名称。 您的Build.scala看起来像这样:
import sbt._
import Keys._
import PlayProject._
object ApplicationBuild extends Build {
val appName = "hurdy"
val appVersion = "1.0"
val appDependencies = Seq(
)
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
)
}
(mainLang值可能是其他值,具体取决于您的主要语言)。
在模块的根目录中,启动“播放”并在本地发布:
steve@hex:/tmp/hurdy$ play
[info] Loading project definition from /tmp/hurdy/project
[info] Set current project to hurdy (in build file:/tmp/hurdy/)
_ _
_ __ | | __ _ _ _| |
| '_ \| |/ _' | || |_|
| __/|_|\____|\__ (_)
|_| |__/
play! 2.0, http://www.playframework.org
> Type "help play" or "license" for more information.
> Type "exit" or use Ctrl+D to leave this console.
[hurdy] $ clean
[success] Total time: 0 s, completed Apr 21, 2012 9:49:00 AM
[hurdy] $ compile
[info] Updating {file:/tmp/hurdy/}hurdy...
[info] Done updating.
[info] Compiling 4 Scala sources and 2 Java sources to /tmp/hurdy/target/scala-2.9.1/classes...
[success] Total time: 7 s, completed Apr 21, 2012 9:49:08 AM
[hurdy] $ publish-local
[info] Packaging /tmp/hurdy/target/scala-2.9.1/hurdy_2.9.1-1.0-SNAPSHOT-sources.jar ...
[info] Done packaging.
[info] Wrote /tmp/hurdy/target/scala-2.9.1/hurdy_2.9.1-1.0-SNAPSHOT.pom
[info] :: delivering :: hurdy#hurdy_2.9.1;1.0-SNAPSHOT :: 1.0-SNAPSHOT :: release :: Sat Apr 21 09:49:12 CEST 2012
[info] delivering ivy file to /tmp/hurdy/target/scala-2.9.1/ivy-1.0-SNAPSHOT.xml
[info] Generating API documentation for main sources...
[info] Packaging /tmp/hurdy/target/scala-2.9.1/hurdy_2.9.1-1.0-SNAPSHOT.jar ...
[info] Done packaging.
model contains 23 documentable templates
[info] API documentation generation successful.
[info] Packaging /tmp/hurdy/target/scala-2.9.1/hurdy_2.9.1-1.0-SNAPSHOT-javadoc.jar ...
[info] Done packaging.
[info] published hurdy_2.9.1 to /home/steve/development/play/play-2.0/framework/../repository/local/hurdy/hurdy_2.9.1/1.0-SNAPSHOT/poms/hurdy_2.9.1.pom
[info] published hurdy_2.9.1 to /home/steve/development/play/play-2.0/framework/../repository/local/hurdy/hurdy_2.9.1/1.0-SNAPSHOT/jars/hurdy_2.9.1.jar
[info] published hurdy_2.9.1 to /home/steve/development/play/play-2.0/framework/../repository/local/hurdy/hurdy_2.9.1/1.0-SNAPSHOT/srcs/hurdy_2.9.1-sources.jar
[info] published hurdy_2.9.1 to /home/steve/development/play/play-2.0/framework/../repository/local/hurdy/hurdy_2.9.1/1.0-SNAPSHOT/docs/hurdy_2.9.1-javadoc.jar
[info] published ivy to /home/steve/development/play/play-2.0/framework/../repository/local/hurdy/hurdy_2.9.1/1.0-SNAPSHOT/ivys/ivy.xml
[success] Total time: 3 s, completed Apr 21, 2012 9:49:15 AM
将发布的文件移至GitHub
这些文件已发布到$ {PLAY_HOME} / repository / local ,并包含在hurdy目录中。 将整个目录移动到新的git存储库
cp -rv ${PLAY_HOME}/repository/local/hurdy <your username>.github.com/releases
将目录更改为.github.com ,然后将所有文件添加到git存储库中,提交并推送它们。
steve@hex:/tmp/schaloner.github.com$ git add .
steve@hex:/tmp/schaloner.github.com$ git commit -m "Added release 1.0 to repository"
steve@hex:/tmp/schaloner.github.com$ git push -u origin master
使用依赖
创建一个新项目(或打开一个旧项目),并添加依赖项及其位置。
object ApplicationBuild extends Build {
val appName = "my-cool-project"
val appVersion = "2.1"
val appDependencies = Seq(
"hurdy" %% "hurdy" % "1.0"
)
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
resolvers += Resolver.url("My GitHub Play Repository", url("http://<your username>.github.com/releases/"))(Resolver.ivyStylePatterns)
)
}
注意: Play已以常春藤样式模式发布文件,因此需要在Build.scala中指定
在您的应用程序根目录中启动Play,然后运行“依赖项”任务。 如果一切顺利–我敢肯定,如果没有,我会通知我–您的模块将从GitHub提取并提供给您的应用程序。
指定组织
由于在Build.scala中未指定组织,因此将组织(存储库/本地/ hurdy /hurdy_2.9.1)与模块名称相同。 如果您想要一个组织,请将其添加到主要定义中:
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
organization := "com.example"
)
现在,当您在本地发布时,文件将放置在repository / local / com.example /hurdy_2.9.1中。 在这种情况下,应将com.example目录从本地存储库复制到GitHub存储库。 使用依赖项的任何应用程序的Build.scala也会类似地不同:
val appDependencies = Seq(
"com.example" %% "hurdy" % "1.0"
)
现实世界证明这行得通
目前,使用http://schaloner.github.com作为存储库,可以使用此机制使用Deadbolt 2。 这里有发行版和快照版本,因此示例应用程序的Build scala看起来像这样:
import sbt._
import Keys._
import PlayProject._
object ApplicationBuild extends Build {
val appName = "deadbolt-usage"
val appVersion = "1.1.3-SNAPSHOT"
val appDependencies = Seq(
"be.objectify" %% "deadbolt-2" % "1.1.3-SNAPSHOT"
)
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
// Change this to point to your local play repository
resolvers += Resolver.url("Objectify Play Repository", url("http://schaloner.github.com/releases/"))(Resolver.ivyStylePatterns),
resolvers += Resolver.url("Objectify Play Repository", url("http://schaloner.github.com/snapshots/"))(Resolver.ivyStylePatterns)
)
}
如果我将所需版本从1.1.3-SNAPSHOT(位于快照/目录中)更改为1.1.3(将位于releases /目录中),则依赖关系将得到正确解决。
参考: Objective博客上的JCG合作伙伴 Steve Chaloner在github上发布了Play 2模块 。
翻译自: https://www.javacodegeeks.com/2012/05/publishing-play-2-modules-on-github.html
github如何创建子模块