2012-11-28 6 views
6

Dobrze się bawię, ucząc się Scali, ale najtrudniej jest mi zrozumieć, jak skonfigurować środowisko programistyczne.Co to jest przepływ pracy Scala + sbt dla Ruby + Bundler z Gemfile?

W Ruby

  • hierarchii plików

    my_app/ 
        | 
        +-- Gemfile 
        +-- app.rb 
    
  • Gemfile

    source :rubygems 
    gem "mechanize" 
    
  • app.rb

    require "mechanize" 
    agent = Mechanize.new 
    page = agent.get("http://google.com") 
    
  • zainstalować zależności i uruchomić go

    $ bundle install 
    $ ruby app.rb 
    

Co to jest równoważne Scala z SBT?

Czytam o SBT i jak pakunki/import/Zależności jar działa w Java/Scala, ale nie wydaje się odfiltrować szkielety potrzeby.

  • Jaka jest minimalna hierarchia plików do replikacji powyższego Scala?
  • Oto lib Java Mechanize dostępny na Maven: http://search.maven.org/#search|ga|1|mechanize
  • Po uruchomieniu sbt i pobierz zależności Mechanize, jak ty rozpoznać niezbędne import oświadczenia musisz dostać tę pracę?

    val agent = new MechanizeAgent 
    val page: HtmlDocument = agent.get("http://www.google.com") 
    

Dostałem powyższy pracy w Eclipse przez ręczne importowanie .jars a następnie importowanie pakietów z bibliotekami aż błędy kompilatora/uruchomieniowe zatrzymany i agent pracował. Ale to doświadczenie było zniechęcające i przyszedłem tutaj, aby pokutować.

Zadanie tego pytania: Ekosystem Java/workflow jest dla mnie przytłaczający, jako osoba, która przyzwyczaiła się do łatwego, bezproblemowego przepływu pracy przez Ruby. Myślę, że ekwiwalent nagich kości dałby mi miejsce, od którego można zacząć budować.

Idealnie chciałabym dostać rozwoju Scala pracuje tylko z Vima i linię poleceń przed uzależnienia od Eclipse.

Odpowiedz

1

chciałbym pójść o krok dalej niż odpowiedzi FFK, wykonaj znacznie więcej ręczne trzymając, i faktycznie dostarczają bezpośrednie tłumaczenie przykładu Ruby do Scala + sbt.

  • hierarchii plików

    Crawler/ 
        +- build.sbt 
        +- src/ 
        +- main/ 
         +- scala/ 
          +- Crawler.scala 
    
  • build.sbt

    libraryDependencies += "com.gistlabs" % "mechanize" % "0.11.0" 
    
  • Crawler.scala

    import com.gistlabs.mechanize.MechanizeAgent 
    import com.gistlabs.mechanize.document.Document 
    
    object Crawler extends App { 
        val agent = new MechanizeAgent 
        val page: Document = agent.get("http://google.com") 
    } 
    
  • zainstalować współzależności i uruchomić go

    $ sbt run 
    

Aby projekt importable w Eclipse czy IntelliJ, musisz sbteclipse-plugin lub SBT-pomysł wtyczki. Ale zamiast zadeklarować tych wtyczek w każdym build.sbt dla każdego nowego projektu, można je zadeklarować w globalnym build.sbt:

// in ~/.sbt/plugins/build.sbt 
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0") 
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.2.0") 

Następnie z powrotem w swoim katalogu Scala aplikacji:

$ sbt eclipse 
or 
$ gen-idea 

Następnie powinieneś być w stanie otworzyć go w odpowiednim IDE.

Uwaga: Po dodaniu zależności w pliku build.sbt należy ponownie uruchomić komendę sbt eclipse/gen-idea, aby IDE mogło ją pobrać.

7

SBT używa biblioteki o nazwie bluszcz importować projekty z głównego repozytorium maven. Istnieje kilka repozytoriów sbt, które są wstępnie skonfigurowane do pracy, w tym główne repozytorium maven.

Gdy te biblioteki zostaną "rozwiązane" (pobrane do komputera i podłączone do projektu), wtyczka eclipse utworzy zależności dla każdego słoika w wygenerowanym projekcie zaćmienia.

Oto jak go skonfigurować.

SBT Zarządzane Zależności

http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def.html#adding-library-dependencies

Dodaj zależność w pliku build.sbt Twojego projektu. Jeśli dodasz zależność, która zależy od konkretnej wersji scala, użyj dwóch %% między grupą a nazwą artefaktu. Nie zapomnij dodać pustej linii między każdym poleceniem w pliku build.sbt.

libraryDependencies += "com.gistlabs" % "mechanize" % "0.11.0" 

libraryDependencies += "org.scalatest" %% "scalatest" % "1.6.1" % "test" 

Aktualizacja Zależności uruchamiając polecenie aktualizacji:

$ sbt update 

SBT Eclipse Plugin

https://github.com/typesafehub/sbteclipse/wiki/Installing-sbteclipse

Można zainstalować zaćmienie SBT wtyczki globalnie poprzez utworzenie pliku w ~/.sbt/plugins/plugins.sbt i wstawienie do niego następującej linii:

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0") 

Gdy dodać lub zaktualizować zależność, uruchom następujące polecenie i odświeżyć swój projekt Eclipse:

$ sbt eclipse