You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven技巧:从依赖中提取指定文件并打包到自身项目Jar包根目录

解决方案

你的方案完全可行:在process-resources阶段将DependencyA中的指定XML文件提取到${project.build.directory}/classes目录,后续Maven打包时会自动将该目录下的内容包含到Jar包根目录中。推荐使用maven-dependency-plugin来实现这个需求,它专门用于处理Maven依赖的解压、复制等操作。

具体配置示例

在你的MyProject的pom.xml中添加以下插件配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.6.1</version>
            <executions>
                <execution>
                    <id>unpack-specific-xmls</id>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>unpack</goal>
                    </goals>
                    <configuration>
                        <!-- 指定要处理的依赖 -->
                        <artifactItems>
                            <artifactItem>
                                <groupId>your.group.id</groupId> <!-- 替换为DependencyA的groupId -->
                                <artifactId>DependencyA</artifactId>
                                <version>your.version</version> <!-- 替换为DependencyA的版本号 -->
                                <type>jar</type>
                                <!-- 精确指定要提取的XML文件 -->
                                <includes>
                                    folder1/file11.xml,
                                    folder1/file12.xml,
                                    folder2/file21.xml
                                </includes>
                                <!-- 输出目录:提取的文件会直接放到classes根目录 -->
                                <outputDirectory>${project.build.directory}/classes</outputDirectory>
                                <!-- 移除原文件的目录前缀,让XML直接输出到目标目录根 -->
                                <unpackOptions>
                                    <stripPaths>folder1,folder2</stripPaths>
                                </unpackOptions>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

配置说明

  • <phase>process-resources</phase>:指定插件在process-resources阶段执行,确保文件在编译前就被放到classes目录,打包时能被包含进Jar。
  • <includes>:精确匹配需要提取的XML文件,避免解压依赖中不必要的内容。
  • <stripPaths>folder1,folder2</stripPaths>:去掉原文件的目录层级,让XML文件直接存放到classes根目录,最终打包后出现在MyProject.jar的根目录下。
  • <outputDirectory>:指定提取后的文件存放路径,对应Maven的编译输出目录。

执行mvn package后,生成的MyProject.jar根目录下就会包含你需要的三个XML文件。

内容的提问来源于stack exchange,提问作者Zak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:30:53