アプリケーションで Akka 構成を上書きしようとしています。アプリケーション用に追加のライブラリを作成しました。これには、Akka を使用するため、application.conf ファイルも含まれています。だから私はそれらのうちの2つを持っています:
application.conf in my lib:
my-conf {
something = 1
}
application.conf in my app, which uses the lib:
something-else = "foo"
my-conf {
something = 1000
}
Intellij Idea からアプリを実行すると、すべて問題なく、lib 構成が上書きされます。アプリに構成をロードするには、簡単なConfigFactory.load()
操作を使用しています。しかし、アプリの jar を作成し、次のmvn clean compile assembly:single
コマンドで実行しようとすると、java -Xmx4048m -XX:MaxPermSize=512M -Xss256K -classpath myApp.jar com.myapp.example.MyMain
エラーが発生します:
Caused by: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'something-else'
そこで、アプリの conf ファイルの名前を変更し、次のようにロードすることにしました。
val defConfig = ConfigFactory load
val myConfig = ConfigFactory load "myconf"
val combined = myConfig.withFallback(defConfig)
val config = ConfigFactory load combined
不足している設定が見つかりましたが、残念ながら、私のアプリからの構成は私のライブラリの構成を上書きしません。私のライブラリでは、デフォルトの方法で構成をロードします。val settings = ConfigFactory load
また、「my-conf.something」は重要な設定であり、アプリから上書きしたいと思います。
私が間違っていることは何ですか?前もって感謝します!
また、jar の作成方法に問題がある可能性があると考えました。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>com.myapp.example.MyMain</mainClass>
</manifest>
</archive>
<finalName>loadtest</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>dist-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>