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

如何在Maven项目中导入非Maven项目编译生成WAR中的类?

解决Maven项目导入非Maven WAR包中类的问题

给你几个可行的解决办法,按需选择:

方法一:提取WAR中的class文件打包成JAR,作为本地依赖

  1. 把原项目生成的WAR文件解压,找到WEB-INF/classes目录——这里面就是原项目编译后的所有class文件
  2. 把classes目录下的内容直接打包成JAR文件(比如命名成original-project-api.jar),放到你的Maven项目的lib目录下(没有就新建一个)
  3. 在你的Maven项目的pom.xml里添加这个本地依赖:
<dependency>
    <groupId>com.yourcompany</groupId> <!-- 自定义和原项目匹配的groupId -->
    <artifactId>original-project-api</artifactId> <!-- 自定义artifactId -->
    <version>1.0.0</version> <!-- 自定义版本号 -->
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/original-project-api.jar</systemPath> <!-- 对应JAR的存放路径 -->
</dependency>
  1. 要是用TeamCity自动构建,记得把这个JAR提交到代码仓库,或者在构建脚本里加个步骤自动从WAR里提取并打包(比如用Ant脚本或者Maven插件做这件事)

方法二:用Maven插件直接从WAR中提取class文件

如果不想手动打包JAR,可以直接让Maven在构建时自动处理WAR包:

  1. 先在pom.xml里添加对原WAR包的依赖:
<dependency>
    <groupId>com.yourcompany</groupId>
    <artifactId>original-project</artifactId>
    <version>1.0.0</version>
    <type>war</type>
    <scope>compile</scope>
</dependency>
  1. 再配置maven-dependency-plugin,让它在构建时把WAR里WEB-INF/classes下的class文件解压到当前项目的编译目录:
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>unpack-war-classes</id>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>unpack</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>com.yourcompany</groupId>
                                <artifactId>original-project</artifactId>
                                <version>1.0.0</version>
                                <type>war</type>
                                <outputDirectory>${project.build.directory}/classes</outputDirectory>
                                <includes>WEB-INF/classes/**/*.class</includes>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

这样Maven编译时就能自动找到需要的包和类了。

方法三:把原非Maven项目转为Maven(长期最优方案)

如果后续还要频繁更新或维护,建议直接把原项目改成Maven结构:

  • 给原项目加个pom.xml,配置好对应的groupId、artifactId、version,以及它的依赖
  • 用Maven编译后发布到公司的私有Maven仓库
  • 你的测试项目直接在pom.xml里添加对原项目artifact的依赖就行,不用再折腾WAR包的事

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:55:14