如何使用Maven依赖项包含本地工件

时间:2019-08-01 08:29:06

标签: java maven

我正在尝试为我的项目生成一个脱机的本地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存储库中搜索这些项目?

1 个答案:

答案 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将使用本地和远程工件创建一个本地缓存,但仍在同一存储库中。