首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >玩子项目路线

玩子项目路线
EN

Stack Overflow用户
提问于 2017-02-14 13:23:53
回答 1查看 305关注 0票数 1

我有一个剧本!2.5.3项目,有一个子项目(有自己的路线)。在主路由文件中,子项目的路由定义如下:

代码语言:javascript
复制
->        /api                         api.Routes
GET       /assets/*file                controllers.Assets.at(path="/public", file)

api.routes文件如下所示:

代码语言:javascript
复制
GET      /v1/permissions/roles         controllers.api.PermissionsController.roles

因此,获取角色的URL将是/api/v1/permissions/roles

当我运行根项目(这取决于两个子项目)时,一切都正常工作,但是当单独运行每个子项目时,则找不到路由。在构建过程中,我尝试将主路由文件复制到构建子项目的conf文件夹,但是它没有工作。

我找到的唯一解决方案是在play.http.router = "api.Routes"中添加application.conf,但是路由“松开”了它的/api前缀(即: api路由是/v1/permissions/roles)。

所以我的问题是:是否可能有一个带有路由的子项目,并且这些路由在运行根项目和单独运行每个子项目时是相同的?

如果可能的话,它在文档里的任何地方吗?

编辑:

根项目的build.sbt

代码语言:javascript
复制
name := """abc"""
version := "0.1.0"
scalaVersion := "2.11.7"

resolvers += Resolver.jcenterRepo
javaOptions in Test += "-Dconfig.file=conf/test.conf"
javaOptions in Test += "-Dtest.timeout=600000"


lazy val abcCore = (project in file("modules/abc-core")).enablePlugins(PlayJava, PlayEbean)

lazy val abcCentral = (project in file("modules/abc-central")).enablePlugins(PlayJava, PlayEbean)
    .dependsOn(abcCore)
    .aggregate(abcCore)

lazy val abcSimulador = (project in file("modules/abc-simulador")).enablePlugins(PlayJava, PlayEbean)
    .dependsOn(abcCore)
    .aggregate(abcCore)


lazy val abcDevice = (project in file("modules/abc-device")).enablePlugins(PlayJava, PlayEbean)
    .dependsOn(abcCore)
    .aggregate(abcCore)

lazy val abcApi = (project in file("modules/abc-api")).enablePlugins(PlayJava, PlayEbean)
    .dependsOn(abcCore, abcSimulador)
    .aggregate(abcCore, abcSimulador)

lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)
    .dependsOn(abcCore, abcDevice, abcCentral, abcSimulador, abcApi)
    .aggregate(abcCore, abcDevice, abcCentral, abcSimulador, abcApi)


libraryDependencies ++= Seq(
    javaJdbc,
    cache,
    javaWs,
    "uk.co.panaxiom" %% "play-jongo" % "2.0.0-jongo1.3",
    "be.objectify" %% "deadbolt-java" % "2.5.0",
    "mysql" % "mysql-connector-java" % "5.1.36",
    "org.hibernate" % "hibernate-validator" % "5.2.4.Final",
    "com.fasterxml.jackson.datatype" % "jackson-datatype-joda" % "2.7.5",
    "uk.co.modular-it" % "bean-utils" % "0.9.10",
    "org.hamcrest" % "hamcrest-library" % "1.3",
    "commons-beanutils" % "commons-beanutils" % "1.9.2",
    "net.coobird" % "thumbnailator" % "0.4.8",
    "io.moquette" % "moquette-broker" % "0.8.1" exclude("org.slf4j", "slf4j-log4j12"),
    "org.mindrot" % "jbcrypt" % "0.3m",
    "org.apache.commons" % "commons-math3" % "3.6.1",
    "com.typesafe.play" %% "play-mailer" % "5.0.0",
    "org.thymeleaf" % "thymeleaf" % "3.0.1.RELEASE",
    "org.jetbrains.kotlin" % "kotlin-stdlib" % "1.0.3",
    "org.eclipse.collections" % "eclipse-collections-api" % "7.1.0",
    "org.eclipse.collections" % "eclipse-collections" % "7.1.0",
    "org.eclipse.collections" % "eclipse-collections-forkjoin" % "7.1.0",
    "net.jpountz.lz4" % "lz4" % "1.3.0",
    "org.mapdb" % "elsa" % "3.0.0-M6",
    "com.google.guava" % "guava" % "19.0",
    "org.jfree" % "jfreesvg" % "3.1",
    "net.sf.jasperreports" % "jasperreports" % "6.3.1",
    "com.github.jhonnymertz" % "java-wkhtmltopdf-wrapper" % "1.0.1-RELEASE",
    "org.awaitility" % "awaitility-scala" % "2.0.0",
    "org.fusesource.mqtt-client" % "mqtt-client" % "1.14")


jacoco.settings
parallelExecution in jacoco.Config := false
jacoco.reportFormats in jacoco.Config := Seq(
    de.johoop.jacoco4sbt.ScalaHTMLReport(encoding = "utf-8", withBranchCoverage = true),
    de.johoop.jacoco4sbt.XMLReport(encoding = "utf-8"))


fork in run := false
fork in Test := false



mappings in Universal <++= (packageBin in Compile) map { jar =>
    val scriptsDir = new java.io.File("modules/abc-api/app/templates/")
    scriptsDir.listFiles.toSeq.map { f =>
        f -> ("app/templates/" + f.getName)
    }
}

mappings in Universal <++= (packageBin in Compile) map { jar =>
    val scriptsDir = new java.io.File("modules/abc-api/public/images/")
    scriptsDir.listFiles.toSeq.map { f =>
        f -> ("public/images/" + f.getName)
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-22 23:14:24

我认为您不能这样做,项目是二进制绑定的,我的意思是所有模块jars都必须在类路径中(按照build.sbt)。你不能单独运行它们。

我希望你看到的是微型服务之类的东西。如果是这样的话,你需要意识到微服务的成本。一旦您决定使用microservices,就可以查看Lagom (https://www.lightbend.com/lagom)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42227316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档