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

maven-war-plugin无法将单个Jar文件直接复制至WEB-INF/lib目录求助

解决maven-war-plugin复制Jar到WEB-INF/lib不带子目录的问题

方法一:调整maven-war-plugin的webResources配置

直接在<resource>节点中明确指定要复制的Jar文件,同时避免复制目录结构,修改后的完整配置如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.3.2</version>
    <configuration>
        <webResources>
            <resource>
                <directory>${project.build.directory}/lib/v1</directory>
                <targetPath>WEB-INF/lib</targetPath>
                <includes>
                    <include>myJar.jar</include>
                </includes>
                <includeEmptyDirs>false</includeEmptyDirs>
            </resource>
        </webResources>
    </configuration>
</plugin>

关键配置说明:

  • <includes>:精准匹配需要复制的Jar文件,避免冗余内容被打包。
  • <includeEmptyDirs>false</includeEmptyDirs>:防止空目录被纳入WAR包,确保仅复制目标文件。

若原配置未生效,大概率是因为${project.build.directory}/lib/v1目录在war插件执行时还未生成。需确保生成该目录及Jar文件的插件(如maven-dependency-plugin)在war插件之前执行——可通过<executions>节点指定插件执行阶段为prepare-package,war插件默认在package阶段执行,以此保证目录提前生成。

方法二:借助maven-resources-plugin复制文件

如果war插件的webResources配置仍有问题,可先用maven-resources-plugin将Jar文件复制到target/classes/WEB-INF/lib目录,war插件会自动将该目录内容打包进WAR的WEB-INF/lib:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.3.1</version>
    <executions>
        <execution>
            <id>copy-myjar</id>
            <phase>prepare-package</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.outputDirectory}/WEB-INF/lib</outputDirectory>
                <resources>
                    <resource>
                        <directory>${project.build.directory}/lib/v1</directory>
                        <includes>
                            <include>myJar.jar</include>
                        </includes>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

执行mvn clean package后,myJar.jar将直接出现在WAR包的WEB-INF/lib目录下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 10:51:25