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?
如果有人能帮我解决这个问题,我会节省很多时间。
我维护一个开源库,该库被推送到一个 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?