web-dev-qa-db-ja.com

SBTを使用して純粋なJavaプロジェクトをビルドする

歴史的に、私はJavaプロジェクトをビルドするためにAnt + IvyまたはMavenを使用しました。現在、非XMLベースのソリューションを調べています。

Gradleは、プロジェクトをコンパイル、jar変換、および公開できますが、問題はほとんどありません。

SBTでも同じことができますか?もしそうなら、sbtを使用してJavaのみのプロジェクトを構築することの簡単な例を提供できますか?.

38
opticyclic

はい、これは完全に可能です。実際にはセットアップするものは何もありません。小さなbuild.sbtファイルで次のようなことができます。

organization := "your.group.id"

name := "Your project"

version := "1.0-SNAPSHOT"

libraryDependencies ++= Seq( <any normal jar deps> )

そして、コマンドラインからsbt packageを実行します。

30
Hiery Nomus

この答え で説明されているように、生成されたアーティファクトパスからscalaバージョン情報を削除することも少し役立ちました。また、 Scala公開するpomまたはivyファイルからの依存関係としてのライブラリ。

必要なものは次のとおりです。

crossPaths := false
autoScalaLibrary := false
27
raimohanska

できますよ。設定例:

name := "myName"
version := "0.1"
organization := "org.myorganization"

javacOptions in (Compile, compile) ++= Seq("-source", "1.8", "-target", "1.8", "-g:lines")

crossPaths := false // drop off Scala suffix from artifact names.
autoScalaLibrary := false // exclude scala-library from dependencies

まとめます。 SBTは大好きですが、Javaで使用する際のトリッキーな部分をすべて備えた完全なビルドを作成する必要があると感じました。この設定は、Mavenの設定よりもbetterになる可能性があることに注意してください。これは、増分テストや増分実行などの素晴らしい機能があるためです。依存関係があり、ファットjar(実行可能ファイル)を作成する場合は、sbt-Assemblyプラグインの追加も検討してください。

11
VasiliNovikov

Javaソース Xerialブログ のbuild.sbtの良い例があり、Scala =バージョンタグ。

2
michael