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

bsa*_*ner 8 java eclipse git maven

如果有人可以帮助我,这将节省我很多时间.

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

我在另一个使用该库的项目中不断工作,我们称之为project2.

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

Project2将Project1作为pom.xml中的依赖项:

 <dependency>
            <groupId>com.group</groupId>
            <artifactId>project1</artifactId>
            <version>1.0-SNAPSHOT</version>

 </dependency>
Run Code Online (Sandbox Code Playgroud)

为了构建一个可以测试我所有更改的方法,我必须做这样的事情:

mvn  -f ./project1/pom.xml clean deploy  
mvn  -U -f ./project2/pom.xml clean package  
Run Code Online (Sandbox Code Playgroud)

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

这是我正在做的更大规模的简化图片,我的编译需要5分钟的上传和下载.

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

Jig*_*shi 7

IDE:

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

这将把project2的类放在类路径中,而不是实际的jar

本地直maven:

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

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

  • 谢谢你的帮助,我需要的解决方案应该独立于IDE - 我需要它在命令行上更快地构建. (2认同)