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

Maven中与jar cvf命令功能等效的pom.xml配置方法是什么

正确配置方案

你需要调整资源输出路径,匹配手动执行jar cvf命令时文件直接存放在jar包根目录的结构,完整配置如下:

<build>
    <resources>
        <resource>
            <directory>./</directory>
            <includes>
                <!-- 精确匹配根目录下的配置文件 -->
                <include>report_properties.properties</include>
                <!-- 匹配net目录及目录下所有层级的文件 -->
                <include>net/**</include>
            </includes>
            <!-- 核心配置:指定资源直接输出到jar包根目录,而非默认的classes目录 -->
            <targetPath>/</targetPath>
        </resource>
    </resources>
    <plugins>
        <!-- 如果当前模块没有Java源码需要编译,可添加该配置跳过编译步骤,避免报错 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version>
            <executions>
                <execution>
                    <id>default-compile</id>
                    <phase>none</phase>
                </execution>
                <execution>
                    <id>default-testCompile</id>
                    <phase>none</phase>
                </execution>
            </executions>
        </plugin>
        <!-- 配置最终生成的jar包名和你之前的fonts.jar一致 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <finalName>fonts</finalName>
            </configuration>
        </plugin>
    </plugins>
</build>

原配置失效原因

  1. 你添加的<sourceDirectory>./</sourceDirectory>是Java源码目录配置,Maven会自动编译该路径下的所有.java文件,如果当前模块没有源码反而会引发报错,不需要保留。
  2. Maven默认会把resources目录下的文件输出到jar包的/classes目录下,和你手动打jar时文件存放在根目录的结构不一致,所以需要通过<targetPath>指定输出路径。

配置完成后执行mvn clean install,生成的jar包结构就和你之前手动打包的完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:21:03