我有一个具有以下目录结构的拖放向导项目:
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。应用服务器配置.yml
它工作正常,我可以读取资源目录下的文件。当我使用 mvn 构建时,在创建的快照 jar 中,它不包含 config.yml,并且"myresource.xml"的路径丢失,即使它包含在快照中.jar在 basedir 中。因此,当我从 jar 文件运行它时,我的代码找不到它作为资源。我应该如何更改pom.xml以包含config.yml并打包资源目录,使其可作为资源访问。
真的很奇怪
this.getClass().getResource("myresource.xml")
在 IDE 中工作,但当您从 jar 运行它时则不然。
this.getClass().getResourceAsStream("myresource.xml")
在 IDE 内部和 jar 中都可以工作。
这解决了资源问题。但是,我需要有关如何打包config.yml文件的答案。除了 jar 文件之外,我是否应该单独提供?