Kayıtlar

sbt etiketine sahip yayınlar gösteriliyor

Play, Scala, sbt, Shading

Resim
Buyuk resmi gor yigenim. Gelin birlikte sifirdan bir scala ve sbt kullarak, multi project bir yapida Play projesi olusturalim. 1. Play  Play, JVM'de kabul gormus bir web application framework'u. Ilk baslangicta, kendi basina calisacak cok basit bir Play projesi olsutralim. IntelliJ kullaniyorum, yeni bir sbt projesi  olustuyorum. Daha sonra build.sbt uzerinde su sekilde eklemeler yapacagiz:      name := "play-standalone"      version := "0.1"      scalaVersion := "2.13.8"    lazy val root = (project in file ( "." ))      .enablePlugins( PlayScala )      .settings(      name := """cok sukseli api projesi""" ,      organization := "com.lombak" ,      version := "1.0-SNAPSHOT" ,      scalaVersion := "2.13.6" ,      libraryDependencies ++= Seq (      guice ,      "org.scalatestplus.play" %% "scalatestplus-play" % "5.0.0&qu

Sbt #4 : Proje release ve CI

Resim
- Kalk yerine yat olm, boynun agrir Oncelikle proje artifactlarini package etmemiz gerekiyor. Bunun icin sbt-native-packager pluginini kullanacagiz. Birkac adim izlemek gerekiyor: 1. project/plugins.sbt dosyasina plugini ekle 2. Packaging formatini tanimla 3. plugin tarafindan saglanan Setting'i calistir Project klasoru altina plugins.sbt dosyasi olusturuyoruz. Icrigi su sekilde: addSbtPlugin("com.typesafe.sbt" %% "sbt-native-packager" % "1.3.21") Paketlemeye gecmeden son adim olarak da, build.sbt dosyasinda iki proje icin de enablePlugin metodu ile sbt-native-packager pluginini JavaAppPackaging formatini kullanacak sekilde konfigure ediyoruz.  lazy val sansOyunlari = project      .dependsOn(api)      .enablePlugins(JavaAppPackaging)      .settings(           libraryDependencies ++= Dependencies.sansOyunlariDependecies      ) Simdi stage komutu ile paketlemeye gecebiliriz. stage, sbt-native-packager tarafindan saglanan bir task.  sbt:hello_sbt> ;cl

Sbt #3 : Dependency Yonetimi

Resim
 Bu postumuzda sbt ile dependency'ler nasil manage edilir (konustugumz dile bak) konusunu isleyecegiz. Sub-projelerin birbirine depend etmesi soz konusu oldugu gibi 3rd party library kullanimina da deginecegiz.  3rd Party Library Daha once sayisal loto tahmin uygulamasi yapmistik. Simdi buna bir ek yaparak, doviz kurlarini da ekleyecegiz. Bunun icin http request yapmamizi saglayacak scala-request kutuphanesini projeye ekliyoruz. buid.sbt dosyasindaki proje tanimlamasina soyle bir ek yapacagiz: name := "hello_sbt" version := "0.1" scalaVersion := "2.13.4" val sansOyunlari = project.settings(      libraryDependencies ++= Seq(           "com.lihaoyi" %% "requests" % "0.6.5",           "org.scala-lang.modules" %% "scala-xml" % "1.2.0",      ) ) Sbt projesini reload ediyoruz. Gidip IntelliJ sbt plugin sekmesine bakarsak su sekilde dependency'lerin olsuturuldugunu gorebiliriz: Simdi requests cal

Sbt #2: Proje yonetimi

Resim
Postun basligi iki yillik bolum adi gibi oldu ama idare edelim.  IntelliJ Yeni projesi Oncelikle IntelliJ ile bir sbt projesi olsuturuyoruz. (IntelliJ community edition ucretsiz ve scala plugini de kurulabiliyor). Sbt'nin de sisteminizde yuklu oldugunu varsayarak (onceki postta bahsetmistik), yeni proje'ye tikliyoruz ve sbt'yi seciyoruz. Projeye bir isim verim tamam'a tikliyoruz. Akabinde IntelliJ hemen build.sbt'yi yuklemeye baslayacak ve karsimiza su sekilde bir klasor yapisi cikacaktir: build.sbt'ye goz atarsak, 3 adet key tanimlanmis oldugunu goruyoruz. Ek olarak IntelliJ spesifik dosyalari ve de projeyi build ettikten sonra olusan artifactlari source repository'e gondermemek icin bir .gitignore dosyasi olusutup su iki satiri ekliyoruz: .idea/ target/ Sub-project yapisi Genisletilebilir (extensible) bir proje yapisi elde etmek icin proje icerisinde sub-proje'ler olsuturmak yaygin bir yaklasim. Bu sayede buyuk bir projenin alt sistemlerini izole veya

Sbt #1 : Temeller

Resim
 Sbt, scala icin var olan en populer build system'lerden bir tanesidir. Peki neden bir build system kullanmaliyiz? 1. compile 2. dependency management 3. test 4. package Bu asamalarin hepsini manuel olarak yapmak heralde cok sacma olacaktir.  Sbt, 2008'de ortaya cikiyor.  Ilk ciktiginda ismi simple build tool seklinde olsa da sonra scala build tool olarak degistiriliyor. Ancak gunumuzde java ve scala projeleri icin kullanilabildiginden artik o anlamini da yitirdi ve sbt bir anlama gelmiyor. Java build tool'lari olan Maven ve Ant ile ayni isi yapiyor denilebilir. Gelistirilmesi ise komunite ve Lightbend (scala ve ekosisteminin arkasinda olan sirket) tarafindan gerceklestiriliyor ki arkasi saglam. Sbt'nin baslica ozellikleri: 1. Zero config: cok az bir konfigurasyon gerektirmesi 2. Testing: scala-test, junit, scala-check ve specs testing frameworkleri ile iyi integrasyon saglar 3. Incremental compilation: proje ve testler icin incremental compilation saglar 4. Multi-p