問題タブ [sbt-assembly]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Scalatra サーブレットのスタンドアロン展開
Scalatra サーブレットを実装し、このチュートリアルで説明されているように、実行可能な jar を作成したいと考えています: http://www.scalatra.org/2.2/guides/deployment/standalone.html
開発には IntelliJ IDEA と Scala プラグインを使用し、sbt を使用してサーブレットをビルドして実行します (プロジェクト ファイルの生成には sbt-idea を使用しました)。私の問題は、プロジェクトをコンパイルしようとすると、チュートリアルの JettyLauncher が使用する jetty パッケージが見つからないことです。
更新: Matt の回答を使用して、JettyLauncher をコンパイルして実行することができました。ただし、sbt-assembly ( https://github.com/sbt/sbt-assembly )にはまだ問題があります。readme の指示に従いましたが、アセンブリ タスクを実行しようとすると次のエラーが発生します。
更新 2: Matt のおかげで、build.scala が動作するようになり、アセンブリ タスクを使用して実行可能な jar ファイルを生成できるようになりました。ただし、sbt-assembly は /src/main/webapp のコンテンツを jar に追加しません。このフォルダーを使用して、HTML、CSS、および JavaScript ファイルを保存します。Scalatra がルートに一致しない場合、これらのファイルを提供します。これは、container:start を使用してサーブレットを実行するときに機能します。さらに、サーバーが必要とするいくつかのファイルを /src/main/webapp/WEB-INF に保存します。これらのファイルも jar に追加されません。
私の build.scala は次のようになります。
前もって感謝します!
plugins - 依存関係の sbt-assembly と複数のクラス定義
sbt と sbt-assembly プラグインを初めて使用するので、パッケージ化しようとしている依存関係内のさまざまなクラス定義を含むビルドをどのように処理するかについて混乱しています。
私は追加しました:
私のbuild.sbtファイルに追加しましたが、まだ上記のエラーが発生しています(ビルドファイルにあるかどうかに関係なく)。ガイダンスをいただければ幸いです。
ありがとう、
ドン
scala - 外部引数を sbt jar に渡す (sbt-assembly で作成)
https://github.com/sbt/sbt-assemblyに基づいてアセンブリ jar プロジェクトを作成し、"logback.xml" と "application.conf" を外部からロードして、fatjar にパッケージ化された両方のデフォルト ファイルをオーバーライドしたいと考えています。
これに似たもの
play が提供するものと非常によく似ていますhttp://www.playframework.com/documentation/2.0/SettingsLogger
これを行うことができますか?
scala - sbt-assembly: 依存関係の jar をメインの jar にリンクする方法は?
私はscalaでコーディングしており、sbt-assemblyプラグインでSBTを使用しています。私のプロジェクトには多くの外部ライブラリがあるため、sbt-assembly が JAR ファイルをパックするのに時間がかかります。コード用と依存関係用に個別の jar ファイルが必要です。したがって、自分のコードだけを再コンパイルして再パックするだけで済みます。これを行う方法?
これまでの進捗状況:
の次のコマンドは、build.sbt
sbt-assembly がライブラリをパックするのを防ぎます。
assembleArtifact in packageScala := false
assembleArtifact in packageDependency := false
次に、次のコマンドを渡すことで、個別の jar を構築できます: assembly
、assembly-package-scala
およびassembly-package-dependency
. 彼らは 3 つの jar を作成します。1 つは私のプログラムを含み、もう 1 つは scala ライブラリを含み、もう 1 つはすべての依存関係を含みます。
ただし、別の jar ファイル内の依存関係が表示されないため、jar ファイルは実行できなくなります。assembly-sbt にクラスパスを追加する必要があると思いますが、これを行う方法がわかりません。
scala - sbt アセンブリを使用した akka + play の依存関係の問題
私は sbt アセンブリを使用してアプリケーションを取得し、「1 つの大きな jar」を作成してデプロイしようとしています。
Play 2.1.2 が scala-stm 0.6 に依存し、akka-transactor 2.1.4 が scala-stm 0.7 に依存しているという問題があります。
問題なく SBT でアプリを実行できます (Eclipse と IntelliJ も同様)。
「sbt assembly」を使用してこの問題を解決する方法がわかりません
ここに私が見ているものを正確に説明するいくつかの出力があります(いくつかのものを切り取りました):
依存関係ツリーを見ると、競合する依存関係を持つ 2 つのものが表示されます (たくさんのものを削除しています)。
この依存関係の問題を解決する方法について何か提案はありますか?
========================= 編集: より簡単な例の追加 ================== ====
Play と Akka だけで非常にシンプルなアプリケーションを作成してみることにしました。ただし、単純な Play アプリを「組み立て」ようとして、問題が発生しています。
これが私の project/plugins.sbt ファイルです:
ここに私の project/Build.scala ファイルがあります:
そして、これが「アセンブリ」から得た出力です
この問題をどのように解決できるかはまだはっきりしていません。この単純なテストの問題を解決できれば、Akka + Play の問題を解決できると思います。
=================== 編集: 同じことを達成する別の方法 =================
play で「魔法の」sbt コマンドを見つけました。「距離」。これにより、アプリケーションが .zip ファイルにパッケージ化され、Java がインストールされている任意のマシンで解凍して実行できます。
これは、ちょっとした情報を見つけた coursera のブログ投稿です。
http://betacs.pro/blog/2013/08/03/deploying-play-apps/
詳細については、次を参照してください。
http://www.playframework.com/documentation/2.1.x/ProductionDist
scala - sbt-assembly でメイン クラスを抑制する
マルチプロジェクト SBT ビルドでは、SBT アセンブリで mainClass 属性を明示的に抑制するにはどうすればよいですか?
私は広範囲に検索しましたが、マルチプロジェクトビルドで sbt-assembly によってビルドされた jar にメインクラスが設定されないようにする方法を見つけることができないようです。
単一プロジェクトのビルドでは、コマンド ラインによって呼び出される可能性のあるクラスが少なくとも 2 つある限り、これは機能するようです。
ただし、mainClass := None
必要さえないようです。実際、そこに残っていても、候補クラスが 1 つしかない場合は、マニフェストにメイン クラスが設定されます。
残念ながら、マルチプロジェクト ビルドでは、追加のクラスをダミーのエントリ ポイントとして含めても、メイン クラスが設定されるのを防ぐことはできませんでした。
いろいろいじった後、いくつかのスコープを個別に設定mainClass
することで、メインクラスが設定されないようにすることができることがわかりました。None
特に、これはトリックを行います:
ドキュメントに記載されているこの要件を見つけることができず、なぜこれが必要なのかわかりません。設定がうまくいきmainClass in (Compile, run) := None
ません。それらは実際には個別にスコープする必要があります。
これは、メイン クラスを手動で抑制する適切な方法ですか、それとも何か不足していますか? バグでない場合、これはどこかに文書化する必要があると思います。特に、シングル プロジェクト ビルドとマルチ プロジェクト ビルドの間で動作が一貫していないことを考えると。
scala - Scalatra スタンドアロン デプロイ可能はアセンブリを作成できません
Scalatra ドキュメント ( http://www.scalatra.org/2.2/guides/deployment/standalone.html ) の指示に従って「アセンブリ」コマンドを実行すると、次のエラーが発生します。
これは何を意味し、どのように修正できますか?
マージ戦略が最初に設定されている私のビルドファイルは次のとおりです。
scala - SBT の分類器とは
用語の下で何を意味しclassifiers
ますか? Jarsから来ていますか?sbt-assembly
プラグインの例: