У меня есть приложение командной строки, которое загружает некоторые отчеты, обрабатывает их, а затем загружает данные на Google Диск. Я использую Typesafe-Config для всей магии строки мне нужны. Typesafe-Config просматривает путь к классам для моего файла application.conf и использует HOCON для сопоставления объектов конфигурации с полями в моем классе, например:
От 1_:
my.homePageUrl = "https://my.home.com"
От MyClass.java
:
private static Config config = ConfigFactory.load();
private static final String HOME_URL = config.getString("my.homePageUrl");
Я использую maven-shade-plugin
для создания исполняемого файла .jar для простого развертывания на удаленном сервере. Плагин выглядит так:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4</version>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>com.my.reports.ReportRunner</Main-Class>
<Class-Path>~/configs/application.conf</Class-Path>
</manifestEntries>
</transformer>
</transformers>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
Проблема в том, что когда я запускаю исполняемый файл .jar, application.conf
не обнаруживается в моем пути к классам (я думаю, это также может быть ошибкой в коде безопасного типа). Все это отлично работает в Intellij.
dustinevan@iMac:~/bin$ java -jar my-reports-1.0-SNAPSHOT.jar
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'my'
at com.typesafe.config.impl.SimpleConfig.findKey(SimpleConfig.java:124)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:147)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:159)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:164)
at com.typesafe.config.impl.SimpleConfig.getList(SimpleConfig.java:212)
at com.typesafe.config.impl.SimpleConfig.getHomogeneousUnwrappedList(SimpleConfig.java:271)
at com.typesafe.config.impl.SimpleConfig.getStringList(SimpleConfig.java:329)
at com.stellarliving.reports.ecp.ReportRunner.<clinit>(ReportRunner.java:19)
dustinevan@iMac:~/configs$ ls
total 8
-rw-r--r--@ 1 dustinevan staff 1520 Jun 13 01:16 application.conf
Я пробовал МНОГИЕ перестановки и много читал, чтобы решить эту проблему, любая помощь будет принята с благодарностью.