设置脱机Maven服务器

时间:2014-02-25 08:02:50

标签: java maven offline

我在一个没有连接互联网的独立开发网络上工作。我已经推迟使用Maven多年了,因为它似乎需要互联网连接,但我终于厌倦了没有我从Maven Central手动下载的JAR所需的依赖项,并且通过文档假设你可以使用Maven。

因此,我正在尝试在开发网络上设置我自己的Maven服务器,并通过CD / USB定期克隆项目及其依赖项。

作为一个Maven'新手',我很难找到我需要做的信息。有人能够为我提供实现上述目标的指南吗?

5 个答案:

答案 0 :(得分:3)

您可以设置Nexus存储库,请参阅http://www.sonatype.org/nexus/

还有this useful answer解决类似的问题。

答案 1 :(得分:2)

您的需求并不罕见。出于安全性和易处理性的原因,许多组织都会这样做。

您首先需要设置一个 maven存储库管理器,它将托管您下载的远程存储库并保留您发布的工件。

查看NexusArtifactory。两者都是很棒的存储库管理器,并且有免费版本。

之后,您需要获取所有maven安装以查看存储库管理器而不是公共Internet。这样做是为了编辑 M2_HOME / conf / settings.xml 。您可以使用maven或安装的存储库管理器查看文档。

按照所有文档进行操作即可。

我希望这会有所帮助。

答案 2 :(得分:1)

您必须在本地存储库中安装每个工件,或者使用像nexus或ar​​tifactory这样的存储库管理器。

mvn org.apache.maven.plugins:maven-install-plugin:2.5.1:install-file  \
-Dfile=path-to-your-artifact-jar \                                                                                 
-DgroupId=your.groupId \                                                                                
-DartifactId=your-artifactId \
-Dversion=version \
-Dpackaging=jar \
-DlocalRepositoryPath=path-to-specific-local-repo

Maven使用与其他资源相同的机制加载自己的插件。您至少需要本地存储库中的那些插件(在$HOME/.m2中)。建议使用支持网络的计算机,设置/构建项目,执行mvn dependency:go-offline,然后将$HOME/.m2存储库传输到USB。然后,如果您要打包mvn -o packageo以供离线使用。

无论如何,这不是我推荐的,因为在这样的设置中使用maven可能会导致相当大的痛苦。

答案 3 :(得分:1)

好的,所以这里是我最终做的一步一步的指南。答案很有帮助,但没有一个真正提供我作为新手所需的信息来启动和运行。



1)在连接到互联网的机器上下载并安装Sonatype Nexus

2)在离线开发网络上安装另一版本的Sonatype Nexus

3)在Eclipse中创建一个'空'Maven项目

4)将以下内容添加到$USER_HOME\.m2\settings.xml(此文件夹的位置在Eclipse的Preferences-> Maven->用户设置中指定)

<settings> ... <mirrors> <mirror> <id>central-nexus</id> <name>Central (Nexus)</name> <url>http://localhost:8081/nexus/content/repositories/central/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> ... </settings>

5)向pom.xml添加所需的依赖关系 - 例如(版本号左右的括号也会告诉它下载更新的版本。)

<dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-parsers</artifactId> <version>[1.5,)</version> </dependency>

6)编译项目。这将导致Nexus缓存所有JAR及其依赖项。

7)将$NEXUS_ROOT\sonatype-work\nexus\storage文件夹转移到离线网络,并用复制的文件替换其中的文件



如果有更聪明的方法进行复制,我还没有解决,所以只复制了更新,但至少让我开始了。

感谢正确方向的指示,希望这些说明足够清晰,以便其他Maven新手可以效仿。

答案 4 :(得分:0)

我建议您使用Apache Archiva等应用程序来实现此目的。它可以用于镜像maven中央存储库。它有一个非常好的文档:http://archiva.apache.org/docs/2.0.0/