3

akka_applicationアーキタイプで sbt-native-packager を使用するアプリケーションに取り組んでいます。

次のようなディレクトリ構造があります。

src/
  main/
    resources/
      application.conf
      somePrivateKey.p12

コード内には、ファイル ハンドルを p12 ファイルに返すメソッドがあります。

def getSomePrivateKey: java.io.File = {
  val cl = this.getClass.getClassLoader
  val fileUrl = cl.getResource("somePrivateKey.p12")
  new java.io.File(fileUrl.getFile())
}

を介してコマンドラインからこれを使用すると、sbt console完全に機能します。予想どおり、ファイルを簡単に操作できます。

ただしsbt stage作成した実行可能ファイルを実行してから実行するとFileNotFoundException、ファイルを開こうとするとエラーが発生します。

リソース内のすべてのファイルを、作成された JAR の ClassPathにコピーするように sbt-native-packager に指示するにはどうすればよいですか? sbt-native-packager のドキュメントを読んで再読し、リソースを に追加しようとしましたがUniversal、それでも毎回発生します。これに近づくべき別の方法はありますか?

4

2 に答える 2

1

まず、getClassLoaderリソースをロードするために使用しないことをお勧めします。baseDirectory.value / "src" / "main" / "resources"のようなまたはより良い相対パスを常に使用するようにしてください"resourceDirectory.value / "your-resources"

sbt-native-packagerには、ファイルをインクルードする方法がいくつかあります。

#1 デフォルト フォルダ

somePrivateKey.p12次のフォルダに配置するだけです

  • src/universal/conf/すべてのディストリビューション (zip、deb、msi など)
  • src/linux/conf/Linux ディストリビューションのみ
  • src/windows/conf/Windows ディストリビューションのみ

これについては、設定の追加ファイルの生成で詳しく読むことができます。

#2 ヘルパー メソッドを使用して手動で

1つのファイルの簡単な方法は非常に基本的です

mappings in Universal += resourceDirectory.value / "somePrivateKey.p12"

さらに、ディレクトリ操作用のヘルパーがあります。詳細については、Mappingshelper ドキュメントを参照してください。

于 2014-12-06T09:39:07.143 に答える