私は次のディレクトリ構造を持つドロップウィザードプロジェクトました:- 0.0.1-SNAPSHOT.jarに
basedir
pom.xml
config.yml
src
main
resources
myresource.xml
The build portion of
<build>
<finalName>project-${version}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>project-package.App</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer">
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
IをEclipseから自分のコードを実行すると、次のようなコマンドが使用されます。
$ mypackage.Appサーバーconfig.yml
正常に動作し、resourcesディレクトリの下のファイルを読み取ることができます。 ビルドにmvnを使用すると、作成されたスナップショットjarにはconfig.ymlが含まれず、basedirのsnapshot.jarに含まれていても "myresource.xml"へのパスはありません。だから、私はjarファイルから実行すると、私のコードはリソースとしてそれを見つけることはありません。 pom.xmlを変更してconfig.ymlをインクルードし、リソースディレクトリとしてリソースとしてアクセスできるようにパッケージ化する必要があります。
'dropwizard'の構成の主な考え方は、構成を外部化することです。 dropwizardアプリケーションのユーザ/管理者は、指定されたシステムおよび/または環境用のアプリケーションを起動するときに正しい設定を提供する責任があります。おそらく未知のデフォルト設定を使用しないでください。実際の設定を別の場所(別のバージョン管理リポジトリなど)にコードとは別に保存します。サンプル構成を配布することもできますが、文書を配布する方法はさらに豊富です。 – zloster
それは正しいです。設定ファイルはビルドとは別に保存する必要があります。 – user2995358