我正在尝试为我的项目生成一个离线本地 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/