首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Maven脱机构建项目而不使用M2回购但使用系统jars

使用Maven脱机构建项目而不使用M2回购但使用系统jars
EN

Stack Overflow用户
提问于 2011-03-28 01:54:00
回答 3查看 2.3K关注 0票数 1

我需要在开放源码操作系统中使用一个项目,在nix环境下完全脱机使用Maven。也就是说,它应该使用系统中可用的依赖项(可能在/usr/share/ +几个其他地方?)。Maven不应该从internet下载任何依赖项。

是否有解决办法来实现这一目标?在系统中创建M2回购不是一个可行的解决方案。问题是文件系统是只读的。我们只能使用写访问权限处理临时文件夹(例如/tmp)。但在临时地点维持回购是个糟糕的设计,不是吗?换句话说,新安装的maven项目应该使用系统中现有的包(如果可用的话)。如果包不存在,则应该单独安装(通过包管理器),不应将其复制到m2回购。

有什么已知的方法吗?

谢谢你的帮助!

PS:请注意,我不是在问-o的选项,让它离线!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-21 16:48:06

我们使用的方法如下。我们决定将m2回购存储在/usr/share/maven-2/maven_home/m2_ repo /。这不是一个临时文件夹,需要管理员权限来编写。但这并不是一个问题,因为安装包也需要管理员权限。

我们已经把回购中的罐子联系起来指向系统级的罐子。也就是说,我们维护了maven存储库结构,但是jars是与系统jars相关联的。这意味着没有不必要的重复和浪费空间。我们仍然把pom文件保存在回购系统中。pom文件由python脚本重写,以满足我们的需要。此外,我们使用 scope引用依赖项。例如,

代码语言:javascript
复制
<dependency>
  <groupId>groupId</groupId>
  <artifactId>artifactId</artifactId>
  <version>666</version>
  <scope>system</scope>
  <systemPath>/usr/share/maven-core/lib/maven-core.jar</systemPath>
</dependency>

对于系统范围,什么是groupId:artifactId:version组合并不重要。它只是挑选它在<systemPath>找到的罐子

票数 0
EN

Stack Overflow用户

发布于 2011-03-28 02:08:12

您可以创建自己的“镜像”存储库(/tmp上实际Maven存储库的镜像),并要求Maven使用它而不是远程存储库。

例子:

http://maven.apache.org/guides/mini/guide-mirror-settings.html

票数 1
EN

Stack Overflow用户

发布于 2011-03-28 15:34:15

我认为您可以创建一个本地maven存储库(包含正确的文件夹树和pom文件),但是可以使用指向只写目录中的jars的符号链接。当然,这个解决方案并不比Shamit的方法简单,您必须编写一些代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5453913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档