6

Scala は楽しく学んでいますが、開発環境のセットアップ方法を把握するのに最も苦労しています。

ルビーで

  • ファイル階層

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

    source :rubygems
    gem "mechanize"
    
  • app.rb

    require "mechanize"
    agent = Mechanize.new
    page = agent.get("http://google.com")
    
  • 依存関係をインストールして実行する

    $ bundle install
    $ ruby app.rb
    

sbt に相当する Scala は何ですか?

私は sbt と、パッケージ/インポート/jar の依存関係が Java/Scala でどのように機能するかについて読んでいますが、最低限の必需品を除外することはできないようです。

  • 上記をScalaで複製するための最小のファイル階層は何ですか?
  • Maven で利用可能な Java Mechanize lib は次のとおりです: http://search.maven.org/#search|ga|1|mechanize
  • Mechanize の依存関係を実行してダウンロードしたら、これを機能させるために必要なステートメントをsbtどのように見分けるのでしょうか?import

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

コンパイラ/ランタイム エラーが停止し、エージェントが機能するまで、.jars を手動でインポートし、ライブラリからパッケージをインポートすることで、上記を Eclipse で機能させました。しかし、その経験は落胆し、私は悔い改めるためにここに来ました。

この質問の意図: Java エコシステム/ワークフローは、Ruby の簡単で IDE のないワークフローに慣れている私にとって圧倒的です。最小限の同等物があれば、構築を開始する場所が得られると思います。

理想的には、Eclipse に依存する前に、Vim とコマンド ラインだけで Scala 開発を行えるようにしたいと考えています。

4

2 に答える 2

7

sbtは、ivyというライブラリを使用して、メインのMavenリポジトリからプロジェクトをインポートします。メインのMavenリポジトリを含め、sbtが動作するように事前設定されているリポジトリがいくつかあります。

これらのライブラリが「解決」されると(コンピューターにダウンロードされ、プロジェクトに接続されると)、eclipseプラグインは、生成されたeclipseプロジェクトの各jarへの依存関係を作成します。

設定方法は次のとおりです。

sbt管理対象の依存関係

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

プロジェクトのbuild.sbtファイルに依存関係を追加します。特定のバージョンのscalaに依存する依存関係を追加する場合は、グループ名とアーティファクト名の間に2%%を使用します。build.sbtファイルの各コマンドの間に空の行を追加することを忘れないでください。

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

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

updateコマンドを実行して、依存関係を更新します。

$ sbt update

sbtEclipseプラグイン

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

〜/ .sbt / plugins / plugins.sbtにファイルを作成し、その中に次の行を挿入することで、sbteclipseプラグインをグローバルにインストールできます。

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

依存関係を追加または更新するときはいつでも、次のコマンドを実行してEclipseプロジェクトを更新してください。

$ sbt eclipse
于 2012-11-28T22:32:40.527 に答える
1

私は ffk の答えよりも一歩進んで、もっと手を取り合って、実際に Ruby の例を Scala + sbt に直接変換したいと思います。

  • ファイル階層

    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")
    }
    
  • 依存関係をインストールして実行する

    $ sbt run
    

プロジェクトを Eclipse または IntelliJ にインポート可能にするには、sbteclipse-pluginまたはsbt-ideaプラグインが必要です。しかし、新しいプロジェクトごとにすべての build.sbt でこれらのプラグインを宣言するのではなく、グローバルな 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")

次に、Scala アプリのルート ディレクトリに戻ります。

$ sbt eclipse
or
$ gen-idea

その後、それぞれの IDE で開くことができるはずです。

注: build.sbt に依存関係を追加するたびに、IDE がそれを取得できるように、sbt eclipse/gen-ideaコマンドを再実行する必要があります。

于 2012-12-14T19:21:59.960 に答える