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

时间:2017-03-19 07:23:03

标签: maven dropwizard

我有一个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并将资源目录打包为可以作为资源访问的方式。

1 个答案:

答案 0 :(得分:0)

真的很奇怪

this.getClass().getResource("myresource.xml")

在IDE中可以正常工作,但是当你从jar中运行时却没有。

this.getClass().getResourceAsStream("myresource.xml") 

在IDE内部和jar中都有效。

解决了资源问题。但是,我需要一个如何打包config.yml文件的答案。我应该另外提供jar文件吗?