2016-04-05 47 views
0

我想将简单的Maven项目替换为SBT项目。但我有 面临几个问题。在行家我有几个型材项目像从maven切换到sbt

<profile> 
       <id>name</id> 
       <properties> 
        <tomcatHome>/apache-tomcat-7.0.42</tomcatHome> 
        <config.folder>/conf/</config.folder> 
        <data.folder>/conf/data</data.folder> 
       </properties> 
      </profile> 

这个文件对于不同的改变建立在行家

mvn package -P name 

,或者可以通过IntelliJ IDEA的嵌入式Maven构建和服务器推出使用

也可以在spring配置中使用属性(通过占位符)。

<context:property-placeholder location="file:${config.folder} /> 

如何为sbt编写类似的配置? 我没有在文档中找到类似的东西 谢谢

+1

请参见[将模块版本作为命令行参数发送到SBT](http://stackoverflow.com/a/36331828/651140)。 –

回答

1

在sbt文件中,您可以使用scala语法。

简单的例子。

val akkaVersion = util.Properties.propOrNone("akka.version").getOrElse("2.4.3") 

libraryDependencies += "com.typesafe.akka" %% "akka-actor" % akkaVersion 

当你调用sbt的版本将被设置为默认值“2.4.3”。但是当你拨打:

sbt -Dakka.version=2.3.13你将使用2.3.13版本。

下一个例子是xsbt-web-plugin。您可以选择JettyPlugin或TomcatPlugin。

val containerPlugin = util.Properties.propOrNone("use.tomcat"). 
        map(_ => TomcatPlugin).getOrElse(JettyPlugin) 

enablePlugins(containerPlugin) 

当你拨打: sbt -Duse.tomcat TomcatPlugin将被使用。否则JettyPlugin。

+0

主要问题是:我怎样才能从** .sbt **文件(例如从'.pom **文件中的'/conf/data')传递参数到** spring ** context '')? – Alexandr