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

时间:2015-01-02 20:59:31

标签: 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>

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

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

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

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

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

2 个答案:

答案 0 :(得分:6)

IDE:

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

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

原生直接专家:

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

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

答案 1 :(得分:3)

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

mvn -o package

然后将project1 build的上传部分删除到远程仓库。

检查以下链接:Intro to repositoriesHow do I configure Maven for offline development?