maven - 使用本地源而不是外部依赖

maven - using local source instead of external dependency

如果有人能帮我解决这个问题,我会节省很多时间。

我维护一个开源库,该库被推送到一个 sonatype 存储库。我每天对该库进行几次更改,然后使用 mvn deploy 将其推送到 1.0_snapshot 构建。 我们称它为 project1

我经常在另一个使用该库的项目中工作,我们称它为 project2。

现在,每当我对项目 1 或 2 进行更改时,我需要先构建项目 1 并将其部署到存储库,然后构建项目 2,以便它下载 project1.jar[=12 的新副本=]

Project2 将 Project1 作为 pom.xml:

的依赖项
 <dependency>
            <groupId>com.group</groupId>
            <artifactId>project1</artifactId>
            <version>1.0-SNAPSHOT</version>

 </dependency>

为了以一种可以测试我的所有更改的方式进行构建,我必须这样做:

mvn  -f ./project1/pom.xml clean deploy  
mvn  -U -f ./project2/pom.xml clean package  

这会将我的 project1.jar 上传到 sonatype,然后 project2 下载新快照并构建它。

这是我在更大范围内所做工作的简化图,其中我的编译需要 5 分钟的上传和下载时间。

问题:使用 maven 的正确方法是什么,它知道在项目 2 的依赖项中使用 project1 的源代码?

IDE:

  • 在eclipse中安装m2e
  • 将您的两个项目导入工作区
  • 来自消费者项目(右键单击 > maven > 启用工作区解析)

这会将项目 2 的 类 放在其 target/classes 的类路径中,而不是实际的 jar

本地直接专家:

  • You can create a maven project tree, 如果这两个是经历相同构建周期的开源项目,则它必须已经有一个,如果它们不相关但与您的用例相关,那么您可以临时在这些项目之上创建一个 Maven 树2 个项目并构建它将在一个命令中自下而上构建的顶级父项目

它会找到叶项目,构建它,将其安装在 Maven 的缓存中,现在在构建 projectA 时,它将从 Maven 的缓存中引用它,因此无需部署到 sonatype

您还可以将 project2 指向使用离线模式构建:

mvn -o package

然后将 project1 构建的上传部分拖放到远程仓库。

检查以下内容link:Intro to repositories and How do I configure Maven for offline development?