我正在尝试在我的应用程序中覆盖 Akka 配置。我为应用程序创建了额外的库,它也有 application.conf 文件,因为它使用 Akka。所以我有两个:
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()
操作。但是,当我创建我的应用程序的 jarmvn 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>