我正在尝试为我的项目生成一个脱机的本地maven存储库文件夹,其中既包含远程依赖关系,又包含对本地项目的一些依赖关系。
当我在项目中运行mvn install
时,Maven成功解决了远程和本地依赖项。现在,为了使所有依赖项都可以脱机使用,我想在我的项目中有一个本地存储库文件夹。我使用命令mvn dependency:go-offline -D"maven.repo.local"="./maven-local"
来实现这一点。但是,Maven设法将所有远程依赖项放置在本地文件夹中,而不是将本地依赖项放置到我的本地项目(已安装)中。
我得到的错误是:
无法在项目通用网关上执行目标:无法解决 项目org.my:ownproject:jar:1.0.1的依赖项: 无法解析工件:org.my:otherproject:jar:1.0.1:可以 在中央找不到工件org.my:otherproject:jar:1.0.1 (https://repo.maven.apache.org/maven2)
如何告诉Maven也要在我的本地~/.m2
存储库中搜索这些项目?
答案 0 :(得分:0)
基本上,您应该使用一个本地存储库来编译Maven项目。
因此,您有三个选择:
选项1
执行mvn dependency:go-offline
时不要指定本地仓库。让它下载到您的常规本地存储库中(默认为~/.m2
)
在那里也安装本地工件,并针对该存储库进行编译。
选项2
与您一样,使用./maven-local
标志将本地项目编译为maven.repo.local
。关键是,本地工件和下载的工件都将位于同一存储库中。
如果需要,可以在settings.xml
中配置本地存储库(请参阅this answer
选项3
IMO对当地开发环境的过度杀伤力,但仍然...
如果您绝对必须分离存储库,则可以在本地安装Nexus / Artifactory之类的软件-它可以提供灵活的存储库管理,然后配置不同的存储库,但是同样,它就像位于您本地的远程存储库一样在PC上,maven将使用本地和远程工件创建一个本地缓存,但仍在同一存储库中。