0

我正在使用 Assembly 插件用 Maven 构建一个可执行 jar。我有一个位于 src/main/resources 的资源文件(.xml)。当我构建可执行 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 大师..

4

2 回答 2

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 
于 2013-09-06T13:35:28.307 回答
0

默认情况下,maven-assembly-plugin制作两个罐子,而不是一个(带有阶段包)。确保您正在运行名为<artifactid>-<version>-jar-with-dependencies.jar

如果这不是问题,那么您是否在这里的 pom 中做任何奇怪的事情:

<build>
    <resources>
        <resource>
             <targetPath><!-- here?? --></targetPath>
        </resource>
    </resources>
    <!-- etc. -->
</build>
于 2013-09-06T16:11:07.290 回答