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

Maven配置:如何将Java SE项目直接作为依赖引入Maven项目

根因说明

Eclipse中手动配置的Build Path是IDE层面的私有配置,Maven执行命令行构建时不会读取这部分规则,因此会出现IDE内运行正常、执行mvn test-compile时报[ERROR] package foo does not exist的问题。以下两种方案都不需要提前将Project1打包为jar,配置完成后可以直接删掉Eclipse里手动加的构建路径依赖,IDE和命令行构建都能正常识别Project1的类。

方案1:直接引入Project1源码目录(零修改Project1)

不需要改动Project1的任何结构,只需要在Project2的pom.xml中添加构建辅助插件,将Project1的源码目录加入Maven编译的源码扫描路径,编译时会直接把Project1的类和Project2的代码一起编译,完全不需要提前打包。
在Project2的pom.xml的<build><plugins>节点下添加如下配置:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>3.5.0</version>
    <executions>
        <execution>
            <id>add-external-project-source</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <!-- 路径为Project1的src目录相对Project2 pom.xml的路径,平级项目直接写下方值即可 -->
                    <source>../Project1/src</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>

配置完成后在Eclipse中右键Project2 -> Maven -> Update Project刷新配置即可,执行mvn test-compile时会自动扫描Project1的源码,不会再报类找不到的错误。

方案2:转为Maven多模块依赖(适合长期关联维护的项目)

如果两个项目是长期关联迭代的,更推荐用Maven原生的模块依赖机制,不需要额外引入插件:

  • 给Project1根目录添加一个最小化的pom.xml,将Project1声明为普通Maven项目,打包类型设为jar即可,不需要手动执行打包命令
  • 在Project2的pom.xml中添加Project1的普通Maven依赖,groupId、artifactId、version和Project1的pom中配置保持一致,在依赖的<relativePath>节点指定Project1的pom.xml路径(平级项目填../Project1/pom.xml即可)
  • 配置完成后Maven会自动识别两个项目的依赖关系,构建Project2时会自动先编译Project1的最新源码,不需要提前将Project1安装到本地仓库,Eclipse导入后也会自动识别项目依赖,不需要手动配置构建路径。
注意事项
  • 不要使用system作用域的依赖,该方式必须指定已存在的本地jar包路径,不符合不打包Project1的需求,且已经被Maven官方标记为废弃。
  • 配置路径时注意相对路径是相对于Project2的pom.xml所在目录计算的,根据自己的实际目录结构调整即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:36:21