java - 如何包含具有 Maven 依赖项的本地 Artifact :go-offline

标签 java maven

我正在尝试为我的项目生成一个离线本地 maven 存储库文件夹,其中包括远程依赖项和一些本地项目的依赖项。

当我在项目中运行 mvn install 时,Maven 成功解决了远程和本地依赖关系。现在,为了使所有依赖项可以离线使用,我希望在我的项目中拥有一个本地存储库文件夹。使用命令 mvn dependency:go-offline -D"maven.repo.local"="./maven-local" 我尝试实现这一目标。但是,Maven 设法将所有远程依赖项放在本地文件夹中,但不将本地依赖项放在我的本地项目(已安装)中。

我得到的错误是:

Failed to execute goal on project genericgateway: Could not resolve dependencies for project org.my:ownproject:jar:1.0.1: The following artifacts could not be resolved: org.my:otherproject:jar:1.0.1: Could not find artifact org.my:otherproject:jar:1.0.1 in central (https://repo.maven.apache.org/maven2)

如何告诉 Maven 在我的本地 ~/.m2 存储库中搜索这些项目?

最佳答案

基本上,您应该使用一个本地存储库来编译 Maven 项目。

因此,您有三个选择:

选项 1 执行 mvn dependency:go-offline 时不要指定本地存储库。让它下载到您的常规本地存储库中(默认情况下为~/.m2) 也在那里安装本地 Artifact 并针对此存储库进行编译。

选项 2 像您一样使用 maven.repo.local 标志将本地项目编译到 ./maven-local 中。关键是本地和下载的 Artifact 都将位于同一个存储库中。

如果需要,您可以在 settings.xml 中配置本地存储库(请参阅 this answer

选项 3

IMO 对于本地开发环境来说太过分了,但仍然......

如果你绝对需要分离存储库,你可以在本地安装像 Nexus/Artifactory 这样的软件 - 它可以提供灵活的存储库管理,然后配置不同的存储库,但话又说回来,它就像驻留在本地 PC 中的远程存储库,maven 会创建一个包含本地和远程 Artifact 的本地缓存,但仍然在同一个存储库中。

关于java - 如何包含具有 Maven 依赖项的本地 Artifact :go-offline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57304850/

相关文章:

java - 创建 SQL 查询以从名义上形成的数据库返回值

java - 如何在通过 DocumentBuidlerFactory 创建新的 xml 文件时生成 ParserConfigurationException

maven - 构建 SNAPSHOT 时不会触发依赖作业

Java EE 数据库外观连接错误

java - 正确生成带有特殊字符的站点地图 XML

java - AbsoluteLayout 在 NetBeans 中丢失

java - Jetty maven插件和spring 4.1.6 - 类未找到异常

java - mvn 目标版本无效 : 1. 7

maven - 我应该在哪里放置 Junit @Category 的接口(interface)类?

java - 使用先前由 maven 构建的依赖项在 IntelliJ 中构建单个类