我是maven项目的新手。 我正在将一个蚂蚁项目改为maven项目。 要在maven本地存储库中安装第三方jar,我使用了install命令。 它试图下载资源jar.pom。 我的组织中没有下载权限,因此安装失败。 请求后,我在我的桌面上得到了资源罐和清洁罐(我也可以得到其他必要的罐子)。 如何让maven在这个过程中使用这些jar,以及如何在没有Internet访问的情况下在本地存储库中安装jar。
我下载了jar并将其放在本地存储库中,但它无法指向路径并使用这些jar。
请让我知道我在执行maven安装和其他命令时遵循的步骤来构建没有Internet访问权限的项目。
我应该在哪里放置我通过外部方式下载的jar。
请指导我构建和部署项目。
提前致谢。
http://maven.40175.n5.nabble.com/Maven-installation-and-using-in-project-without-Internet-conncetion-tp4564443p4564443.html。 http://www.coderanch.com/t/544641/Jobs-Offered/careers/Maven-installation-project-without-Internet#2471141
我在这些链接中发布了同样的问题
答案 0 :(得分:13)
您需要互联网连接。 Maven最初并不是自给自足的。它需要下载一堆插件及其依赖项和您自己项目的依赖项。这实际上取决于您对项目的设置类型。一个设置将需要一组依赖项,另一组 - 一个完全不同的依赖项。您无法手动从Maven Central下载工件,然后逐个在本地安装。简单地说,这听起来很愚蠢。
我知道你来自Ant世界,Ant拥有本地文件系统所需的一切。但是,Maven依赖于它将拥有一个中央存储库(Maven Central,或您自己的存储库 - Nexus,Artifactory等)从中下载所需的插件和依赖项。除非您被允许访问Central Maven存储库,否则迁移到Maven没有任何意义。
是的,确实,您 可以 离线运行Maven, 可以 让Maven生成本地存储库您在离线模式下使用。 然而 ,您要做的就是违反Maven的原则。
如果您的公司不允许访问Maven Central,请坚持使用Ant。你的努力将浪费你的公司,并最终浪费你自己的时间。
答案 1 :(得分:4)
实际上,maven强项主要在互联网可访问的存储库和自动依赖管理中。但是,如果您在本地存储库中拥有项目所需的所有依赖项,则可以使用此工具来构建项目。然后你可以使用-o选项进行离线模式,maven不会尝试下载更新的artefact版本。
要将工件放入本地存储库,您有以下几种选择:
1)连接到互联网一次并mvn构建项目(这将下载所有必需的依赖项)
2)手动将依赖关系作为jar安装到本地存储库(使用适当的mvn命令)
答案 2 :(得分:4)
可以使用install-file
在本地maven仓库中安装这些资源罐。这将使构建可用。你必须为每个人单独做这件事,但一旦完成,你将不必做任何特别的事。
要明确的是,maven将所有内容放在您的本地存储库中,包括您使用此项目构建的jar和各种库jar。由于您的系统无法连接到互联网,因此maven可以使用您的库填充本地存储库,您必须使用此手动方法。
修改:您应该可以在任何地方运行install-file
。执行此操作时,您需要使用命令行选项提供groupId,artifactId,version和packaging。如果您已有库的POM文件,则可以通过-DpomFile=your-pom.xml
提供该文件。
这个问题有一些有用的信息:How to manually install an artifact in Maven 2?
答案 3 :(得分:3)
您可以将maven配置为在离线模式下运行。将此条目添加到您的settings.xml
<offline>true</offline>
请点击此处获取更多信息:
http://maven.apache.org/settings.html
在使用离线模式之前,您必须将所有必要的第三方jar安装到本地maven存储库。
mvn install:install-file
-Dfile=filename.jar
-DgroupId=com.stackoverflow
-DartifactId=artifact
-Dversion=1.0.0
-Dpackaging=jar
-DcreateChecksum=true
-DgeneratePom=true
使用互联网连接和在线模式将这些罐子放到本地存储库中要容易得多。
答案 4 :(得分:3)
我认为提问者正在为mvn寻找-o或--offline选项。这是一个命令行选项,可以在执行时提供。
我认为您可以正确设置您的仓库并在连接到互联网时执行一次mvn目标并使用-o选项进行后续执行。
希望这有帮助。
〜阿沛