相对于最终Jar的Maven Shade外部属性文件

时间:2014-08-28 15:47:24

标签: java maven maven-shade-plugin

大家好!

对不起,如果这是一个愚蠢的问题,但我是Maven的新手并且陷入了僵局!

  1. 我有一个使用MyTest.properties,MoreMyTest.properties的项目。
  2. 我使用Maven Shade插件将此项目构建为.jar文件,该文件正常运行!不幸的是,shade插件在我的jar文件中打包了MyTest.properties。
  3. 然后,当我尝试执行jar时出现此错误。

      

    java.io.FileNotFoundException:无法找到:properties / MyTest.properties at file:\ C:\ Dev \ test.jar!\ properties \ MyTest.properties               在......

    我想在我的IDE中访问我的属性,并在部署时从命令行运行jar。我想把我的属性文件放在我的jar文件位置上方的相对文件夹../lib/中。

    在我的程序中,我想访问这样的属性:

    File testProperties = new File(
      ClassLoader.getSystemResource("properties/MyTest.properties").getFile()
    );
    

    我尝试将其添加到我的POM.xml

    <transformer
        implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
      <resource>*.properties</resource>
      <file>../*properties</file>
    </transformer>
    

    (抱歉格式在上面的代码片段中搞乱了!)

    但是,它不起作用。我真的很感激这方面的任何帮助。我没有发布所有代码,因为代码非常大,但我希望你能够了解我正在努力实现的目标。

    非常感谢, 保罗

1 个答案:

答案 0 :(得分:1)

好的,我有一个解决方案。总是顺便发布!但谢谢你的回复。

  <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>../lib</outputDirectory>
                        <resources>
                            <resource>
                                <directory>src/main/resources</directory>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>