如何正确命名播放应用程序?
How do I properly namespace a play application?
我启动了一个 Play 应用程序(我的第一个,如果你猜不出来的话)。我在项目根目录中保留了标准结构:app 和 conf。资产、控制器、模型和视图直接位于应用程序下方。例如,Application.scala 属于 "controllers" 包。当我打包它时,它会创建一个名为 MyAppName-1.0-SNAPSHOT.jar 的 jar。显然,如果我要部署到 Nexus,这是行不通的。
我试图将 "app" 下的所有包(控制器、模型、视图)重构到 org.myorg.myappname 中,结果把它搞砸了。关于如何将命名空间正确添加到我的应用程序的任何提示?
不完全确定我是否理解你的问题,但是:
关于要发布到 nexus 的工件
组织和工件名称与调用其中的包没有任何关系。您可以使用 build.sbt
中的 name
和 organization
设置来设置它们。例如:
name := "amazeweb"
organization := "com.mycompany"
version := "1.0-SNAPSHOT"
这就像在 Maven 项目的 pom.xml
中设置相应的属性一样工作。
关于套餐
如果您的代码要与许多其他代码共存,那么使用包进行深层命名空间是有意义的。例如,如果你正在编写一个库,但在 Java-land 它已经成为 everything 的常见做法。
在 webapp 中,代码更像是叶子,它将是 运行,而不是针对其进行编码,因此包冲突永远不会成为真正的问题。这就是 play 项目通常只使用几个浅包的原因。
我启动了一个 Play 应用程序(我的第一个,如果你猜不出来的话)。我在项目根目录中保留了标准结构:app 和 conf。资产、控制器、模型和视图直接位于应用程序下方。例如,Application.scala 属于 "controllers" 包。当我打包它时,它会创建一个名为 MyAppName-1.0-SNAPSHOT.jar 的 jar。显然,如果我要部署到 Nexus,这是行不通的。
我试图将 "app" 下的所有包(控制器、模型、视图)重构到 org.myorg.myappname 中,结果把它搞砸了。关于如何将命名空间正确添加到我的应用程序的任何提示?
不完全确定我是否理解你的问题,但是:
关于要发布到 nexus 的工件
组织和工件名称与调用其中的包没有任何关系。您可以使用 build.sbt
中的 name
和 organization
设置来设置它们。例如:
name := "amazeweb"
organization := "com.mycompany"
version := "1.0-SNAPSHOT"
这就像在 Maven 项目的 pom.xml
中设置相应的属性一样工作。
关于套餐
如果您的代码要与许多其他代码共存,那么使用包进行深层命名空间是有意义的。例如,如果你正在编写一个库,但在 Java-land 它已经成为 everything 的常见做法。
在 webapp 中,代码更像是叶子,它将是 运行,而不是针对其进行编码,因此包冲突永远不会成为真正的问题。这就是 play 项目通常只使用几个浅包的原因。