我有一个drop wizard项目,它具有以下目录结构:
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>
当我从Eclipse运行代码时,我使用如下命令:
$ mypackage.App服务器config.yml
它工作正常,我可以读取资源目录下的文件。
当我使用mvn构建时,在创建的快照jar中,它不包含config.yml,并且“myresource.xml”的路径丢失,即使它包含在basedir中的snapshot.jar中。所以,当我从我的jar文件中运行它时,我的代码没有找到它作为资源。
我应该如何更改pom.xml以包含config.yml并将资源目录打包为可以作为资源访问的方式。
答案 0 :(得分:0)
真的很奇怪
this.getClass().getResource("myresource.xml")
在IDE中可以正常工作,但是当你从jar中运行时却没有。
this.getClass().getResourceAsStream("myresource.xml")
在IDE内部和jar中都有效。
解决了资源问题。但是,我需要一个如何打包config.yml文件的答案。我应该另外提供jar文件吗?