How to package config.yml and resources in $project--0.0.1-SNAPSHOT.jar

|▌冷眼眸甩不掉的悲伤 提交于 2021-01-29 07:42:41

问题


I've a drop wizard project which has the following directory structure:

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>

When I run my code from Eclipse, I use command as follows:
$mypackage.App server config.yml
It works fine and I can read the file under resources directory. When I use mvn to build, in the snapshot jar created, it does not include config.yml and the path to "myresource.xml" is missing even though it is included in the snapshot.jar in the basedir. So, when I run it from my jar file, my code does not find it as resources. How should I change the pom.xml to include config.yml and package the resource directory such a way that it is accessible as resource.


回答1:


It is really strange that

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

does work in IDE but NOT when you run it from a jar.

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

works both inside IDE and from jar.

That resolves the resources issue. However, I need an answer for how to package config.yml file. Should I supply separately in addition to the jar file?



来源:https://stackoverflow.com/questions/42884004/how-to-package-config-yml-and-resources-in-project-0-0-1-snapshot-jar

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!