Maven:不将文件从src / main / resources复制到classpath根目录 - 可执行文件Jar

时间:2013-09-06 13:07:00

标签: java eclipse maven jar executable

我正在使用Assembly插件使用Maven构建一个可执行jar。我有一个资源文件(.xml)放在src / main / resources。当我构建可执行jar时,文件没有被复制到jar中 - 通过解压缩jar来检查。

这是我的pom.xml:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
        <execution>
            <id>package-jar-with-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
            <configuration>
                <appendAssemblyId>false</appendAssemblyId>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>xx.com.xxx.xxxx.xx.xxxx.InterfaceRunner</mainClass>
                    </manifest>
                    <manifestEntries>
                        <Class-Path>.</Class-Path>
                    </manifestEntries>
                </archive>
            </configuration>
        </execution>
    </executions>
</plugin>

我正在尝试调用以下保存在src / main / resources下的资源:

reader = Resources.getResourceAsReader("mybatis-configuration.xml");

执行java -jar InterfaceRunner.jar

时获得以下异常
Exception caught while reading or parsing the mybatis config xml :java.io.IOException: Could not find resource mybatis-configuration.xml
    at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:108)
    at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:95)
    at org.apache.ibatis.io.Resources.getResourceAsReader(Resources.java:153)

之前有没有人遇到过类似的问题?寻求你的帮助,Maven大师..

2 个答案:

答案 0 :(得分:0)

您可以尝试按以下方式替换Configuration;

<configuration>
        <archive>
                <manifest>
                        <mainClass>xx.com.xxx.xxxx.xx.xxxx.InterfaceRunner</mainClass>
                </manifest>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    <finalName>InterfaceRunner</finalName>
</configuration>

然后

mvn package 

答案 1 :(得分:0)

默认情况下,maven-assembly-plugin生成两个罐子,而不是一个(带有相位包)。确保您运行的是<artifactid>-<version>-jar-with-dependencies.jar

如果这不是问题,你在这里做了什么奇怪的事情:

<build>
    <resources>
        <resource>
             <targetPath><!-- here?? --></targetPath>
        </resource>
    </resources>
    <!-- etc. -->
</build>