2017-01-23 54 views
2

我試圖從version.sbt獲取版本,並將其填充到logback.xml的日誌appender的applicationVersion字段中。從version.sbt動態填充版本

version.sbt

version in ThisBuild := "0.4.63"

logback.xml

<configuration debug="true" scan="true" scanPeriod="60 seconds"> 

    <appender name="ADP-MESSAGING" class="com.agoda.adp.messaging.logging.appenders.LogbackAppender"> 
     <applicationName>MyApp</applicationName> 
     <applicationAssemblyName>myapp</applicationAssemblyName> 

     <applicationVersion>0.4.61</applicationVersion> 

     <!-- <applicationVersion>${application.version}</applicationVersion> --> 

     <apiKey>[email protected]#[email protected][email protected]</apiKey> 
     <getCallerData>false</getCallerData> 
    </appender> 

    .... 

    <root level="WARN"> 
     <appender-ref ref="ADP-MESSAGING" /> 
     <appender-ref ref="STDOUT" /> 
    </root> 
</configuration> 

我試圖通過添加${application.version}${version}但沒有成功。

我該怎麼做? 請分享您的想法。

感謝

回答

2

logback.xml文件中插入的值是簡單的Java系統屬性。所有你需要做的就是將值添加到您的Java命令行定義所需的值:

// NOTE: This will only work when running through sbt. You'll have to 
// append the same value to your startup scripts when running elsewhere. 
javaOptions += "-Dapplication.version=" + version.value 

有了這個標誌,你應該能夠在XML文件中進行插值的版本:

<applicationVersion>${application.version}</applicationVersion> 
+0

謝謝你爲你解答。我們通過shell腳本運行應用程序。我正在尋找一種方法來動態更新'logback.xml'中的'',而無需在每次運行應用程序時都修改shell腳本。 –

+0

我認爲其他兩個選項是通過shell腳本的參數,或者編輯'logback.xml',並在'version.sbt'發生更改時提交。這些都是你想到的嗎? – jkinkead