如何在 $project--0.0.1-SNAPSHOT.jar 中打包 config.yml 和资源



我有一个具有以下目录结构的拖放向导项目:

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 文件之外,我是否应该单独提供?

最新更新