我需要在开放源码操作系统中使用一个项目,在nix环境下完全脱机使用Maven。也就是说,它应该使用系统中可用的依赖项(可能在/usr/share/ +几个其他地方?)。Maven不应该从internet下载任何依赖项。
是否有解决办法来实现这一目标?在系统中创建M2回购不是一个可行的解决方案。问题是文件系统是只读的。我们只能使用写访问权限处理临时文件夹(例如/tmp)。但在临时地点维持回购是个糟糕的设计,不是吗?换句话说,新安装的maven项目应该使用系统中现有的包(如果可用的话)。如果包不存在,则应该单独安装(通过包管理器),不应将其复制到m2回购。
有什么已知的方法吗?
谢谢你的帮助!
PS:请注意,我不是在问-o的选项,让它离线!
发布于 2011-08-21 16:48:06
我们使用的方法如下。我们决定将m2回购存储在/usr/share/maven-2/maven_home/m2_ repo /。这不是一个临时文件夹,需要管理员权限来编写。但这并不是一个问题,因为安装包也需要管理员权限。
我们已经把回购中的罐子联系起来指向系统级的罐子。也就是说,我们维护了maven存储库结构,但是jars是与系统jars相关联的。这意味着没有不必要的重复和浪费空间。我们仍然把pom文件保存在回购系统中。pom文件由python脚本重写,以满足我们的需要。此外,我们使用 scope引用依赖项。例如,
<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>找到的罐子
发布于 2011-03-28 02:08:12
您可以创建自己的“镜像”存储库(/tmp上实际Maven存储库的镜像),并要求Maven使用它而不是远程存储库。
例子:
http://maven.apache.org/guides/mini/guide-mirror-settings.html
发布于 2011-03-28 15:34:15
我认为您可以创建一个本地maven存储库(包含正确的文件夹树和pom文件),但是可以使用指向只写目录中的jars的符号链接。当然,这个解决方案并不比Shamit的方法简单,您必须编写一些代码。
https://stackoverflow.com/questions/5453913
复制相似问题