0

考虑我有一个名为的模块myservice,其中包含子模块service1service2

myproject/
          myservice/ 
                   / service1
                             /com/sample/process
                                                 SomeFile1.scala
                                                 SomeFile11.scala
                                        /endpoint
                                                                                                  
                                                 SomeFile13.scala
                                                 SomeFile111.scala
                   / service2
                             /com/sample/mov
                                                 SomeFile2.scala
                                                 SomeFile21.scala

我将构建信息定义为:

lazy val service1 = project.in(file("myservice/service1"))
lazy val service2 = project.in(file("myservice/service2"))

lazy val root = (project in file(".")).
  enablePlugins(BuildInfoPlugin).
  settings(
    buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion),
    buildInfoPackage := "?" //What will be the package name here ?
  )

Q1。我是否需要分别为每个模块启用 buildinfo 插件,如下所示?
Q2。如果是这样,这里的包裹是什么

  lazy val service1 = project.in(file("myservice/service1"))
                     enablePlugins(BuildInfoPlugin).
                settings(
                buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion),
                buildInfoPackage := "?" //What will be the package name here ?
                 )

  lazy val service2 = project.in(file("myservice/service2"))
                     enablePlugins(BuildInfoPlugin).
                settings(
                buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion),
                buildInfoPackage := "?" //What will be the package name here ?
                 )
4

1 回答 1

1

在源代码中我没有注意到任何触发器,所以插件不会自动打开 - 我会为每个需要生成它的项目手动启用它。

包是这个生成的case class将被放置的地方。您希望将其放入com.my.package源代码中并作为com.my.package.BuildInfo? 然后设置buildInfoPackage"com.my.package"

请记住,如果您启用此插件两次(或更多)并且在每个包中您将在同一个包中生成案例类,那么如果有任何东西同时使用这两个模块,您将发生冲突。或者,如果一个人依赖另一个人。所以我只会在项目的其余部分重用的一些公共模块中生成这个案例类,除非你想例如将每个模块发布为一个库并在运行时检查库组件是否处于兼容版本(类似于 Akka 所做的检查所有库都有匹配的版本) - 在这种情况下,每个模块都应该使用不同的包作为生成器的目标。

于 2020-11-26T10:47:29.920 回答