SBT ve Typesafe Config Kullanımı ile ilgili

25 views
Skip to first unread message

Koray Al

unread,
Aug 14, 2014, 4:53:42 AM8/14/14
to scala-...@googlegroups.com
Merhabalar,

SBT+Scala projelerinde uygulamamızda yeni bir sürüm oluşturduğumuzda, (build.sbt içinde " version := "0.0.1" " satırı) bu parametreye uygulama içerisinde ulaşmamız mümkün müdür?

Uygulamalarımızı çalıştırırken açılışta sürüm bilgisini logluyoruz. Zaman zaman dış birimlerden de uygulama sürümünü sorgulama gereksinimi duyabiliyoruz.

Şu ana kadar her güncelleme yaptığımda uygulama içerisinde bir versiyon değişkeni tutup bunu elle güncelliyordum. Fakat SBT-Native-Packager kullanmaya başladıktan sonra artık hem build.sbt'te hem uygulama içerisinde vs. sürüm bilgisini güncellemem gerekiyor. Bu da malumunuz biz üşengeçler için büyük bir yük :)

Aklımdaki çözüm şuydu: (Play framework örneklerinde de sanırım bu tip bir çözüm kullanılmış)

- uygulamaya özel detaylar (uygulama adı, versiyon vs.) application.conf içinde saklanır.
- hem build.sbt hem de uygulama içinde ConfigFactory.load.getString("app.version") ile bu bilgiler uygulama içerisinde kullanılır.

Fakat gelin görün ki build.sbt içinde "import com.typesafe.config._" çalışmıyor. Haliyle build.sbt içine bunu çekemiyorum.

Internet'te baya araştırdım fakat çalışır bir çözüm bulamadım.

Bu konuda önerileriniz nedir? Sürümlendirme işlerinizi nasıl yapıyorsunuz? 

( proje sayısı arttıkça bu tip bir çözüme olan ihtiyacımız daha da artmaya başladı :) )

Sevgiler, saygılar,
Koray

cagdas senol

unread,
Aug 14, 2014, 7:59:15 AM8/14/14
to scala-...@googlegroups.com

2014-08-14 11:53 GMT+03:00 Koray Al <hecat...@gmail.com>:
Fakat gelin görün ki build.sbt içinde "import com.typesafe.config._" çalışmıyor. Haliyle build.sbt içine bunu çekemiyorum.

sbt 0.13.0 itibariyle biz çalıştırıyoruz.

project/hede.sbt içinde typsafeconfigi bağımlılık olarak vermeniz lazım sanırım


  testOptions in Test += Tests.Setup { () =>
  import com.typesafe.config.ConfigFactory
  import com.typesafe.config.ConfigException.BadValue
 if (!ConfigFactory.parseFile(new File("conf
.....
}


--
Cagdas Senol

Mustafa Simav

unread,
Aug 14, 2014, 8:20:38 AM8/14/14
to scala-...@googlegroups.com
Selam Koray,

Uygulama versiyonunu build.sbt icinde tanimyalip, uygulamadan ulasmak istersen sbt-buildinfo isimli sbt plugin'ine goz atabilirsin. Her compile komutu calistirdiginda, uygulama adi ve versiyonu gibi bilgilerin tanimli oldugu bir scala objesi generate ediyor.

Mustafa



--
Bu iletiyi Google Grupları'ndaki "Scala Türkiye" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için scala-turkiy...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için https://groups.google.com/d/optout adresini ziyaret edin.

Koray Al

unread,
Aug 14, 2014, 8:34:00 AM8/14/14
to scala-...@googlegroups.com

Selam Koray,

Uygulama versiyonunu build.sbt icinde tanimyalip, uygulamadan ulasmak istersen sbt-buildinfo isimli sbt plugin'ine goz atabilirsin. Her compile komutu calistirdiginda, uygulama adi ve versiyonu gibi bilgilerin tanimli oldugu bir scala objesi generate ediyor.

Bunu da gördüm ama nedense gözümden kaçmış :) halbuki scalaxb için buna benzer bir yöntem kullanıyordum. tam aradığım şey.

build.sbt içine şunları ekliyorum:

buildInfoSettings

sourceGenerators in Compile <+= buildInfo

buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion)

buildInfoPackage := "tr.com.koray.testproject"
 

sonra uygulamamın içinde:


import tr.com.koray.testproject.BuildInfo.{name, version}
log.info(s"$name - v$version")

yapmam yeterli oluyor :) Süper oldu bu!

Teşekkürler. Bir de bunu git-flow'daki release'ler ile otomatikleştirirsem bu konuda hiç başım ağrımaz artık.
Reply all
Reply to author
Forward
0 new messages