Playframework 2.0 如何在play framework 2中共享模块
我正在尝试使用PlayFramework2(JAVA)构建2个使用相同核心功能的网站。挑战在于如何设置项目,以便核心部分可以在两个项目之间共享。在Play1中,我们可以有一个公共模块,并通过应用程序将其汇集在一起,但我无法找到使用Play2实现这一点的方法。我知道我可以创建一个模块目录并将核心代码放在那里,但这对我来说不是一个理想的解决方案,因为模块中的代码需要与多个项目共享。有人知道如何解决这个问题吗 到目前为止,我试图通过创建一个包含3个模块的项目来解决这个问题,一个是核心模块,另一个是网站Playframework 2.0 如何在play framework 2中共享模块,playframework-2.0,sbt,Playframework 2.0,Sbt,我正在尝试使用PlayFramework2(JAVA)构建2个使用相同核心功能的网站。挑战在于如何设置项目,以便核心部分可以在两个项目之间共享。在Play1中,我们可以有一个公共模块,并通过应用程序将其汇集在一起,但我无法找到使用Play2实现这一点的方法。我知道我可以创建一个模块目录并将核心代码放在那里,但这对我来说不是一个理想的解决方案,因为模块中的代码需要与多个项目共享。有人知道如何解决这个问题吗 到目前为止,我试图通过创建一个包含3个模块的项目来解决这个问题,一个是核心模块,另一个是网站
-mainProject
-modules
-core
-website1
-website2
但问题是,我无法从其他模块中的代码调用内核中的函数。另外,不方便的是,我保留了多个构建文件和路由文件,并且根据我想要构建的网站,我将它们重命名
请注意,核心需要在控制器中有自己的路由和操作
谢谢我认为Play没有内置多模块支持,但您可以在Play的基础上使用Maven构建一个解决方案 您可以做什么来制作3个不同的播放项目,核心、网站1和网站2各一个。因为您需要“导出”核心项目,所以可以使用Maven来完成 在核心项目中,创建一个pom.xml(Maven构建文件),该文件可以。然后运行以在本地存储库中安装核心JAR,然后可以在其他网站项目中使用。 (旁注,这里有一个你可能会觉得有用的例子) 现在,在Website1和Website2Play项目中,您将在Build.scala文件中向这个JAR添加一个。您可以将其添加到appDependencies
val appDependencies = Seq(
"your-core-project-artifact-name" % "your-core-project-project-name" % "1.0.0.0",
"javax.mail" % "mail" % "1.4" // Existing libraries
)
最后,在Website1和Website2项目中添加本地存储库(安装核心项目的地方)作为解析器
resolvers += (
"Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository"
)
给你。当您构建Website1/Website2项目时,Play应该将依赖项添加到您的核心项目中,并且您将能够从您的网站项目中调用核心项目中的方法如果您有一个完整的Play项目,并且希望在其他网站中重用,这在概念上是一种方法。但是你不必介绍Maven。您可以从
core
运行publish local
任务,将其发布到本地播放存储库。然后,您可以将其作为依赖项列在您的网站项目中,如上所述,而无需添加其他存储库。作为后续评论,我在过去尝试过这样做,但没有成功。我遇到的一个问题是加载路由文件。使用此设置,您将拥有一个带有路由
文件的主网站应用程序,以及一个带有另一个路由
文件的核心JAR。我发现在启动我的网站项目时,我的核心路线将胜过我的网站路线,因此将是我的网站唯一可用的路线。然而,当时我在Play 2.0中工作,在Play 2.1中可能有办法解决这个问题。@avik,谢谢,在您提出的解决方案中,该模块将是一个完全独立的Play模块,还是会放在项目中的模块目录下?@nightograph-如@PowerPanda的回答中所述,core
,website1
和website2
是完全独立的播放项目。