SBT替代maven的依赖管理

kn_*_*van 8 maven sbt

在我们的多项目代码库中,我们使用Maven作为构建框架.
但是,我们有一个基于Play框架的模块,我们必须使用SBT构建.

在Maven项目中,我们通过另一个名为"version"的项目配置了dependencyManagement,并将其包含在pom.xml中,如下所示.

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.xxxx.release</groupId>
            <artifactId>xxxx-version</artifactId>
            <version>${project.version}</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)

这确保为特定构建提取正确版本的依赖项jar.

有没有办法与SBT实现相同的目标?

Eug*_*ota 2

您可以创建一个内部 sbt 插件,定义如下内容:

package com.example

import sbt._

object Dependencies {
  // versions
  lazy val akkaVersion = "2.5.22"

  // libraries
  val akkaActor = "com.typesafe.akka" %% "akka-actor" % akkaVersion
  val akkaCluster = "com.typesafe.akka" %% "akka-cluster" % akkaVersion
}
Run Code Online (Sandbox Code Playgroud)

将插件添加到您的 Play 应用程序后,您可以在里面编写build.sbt如下内容:

import com.example.Dependencies._
Run Code Online (Sandbox Code Playgroud)

并将akkaActor可作为名称使用。