前言:Maven的运行机理是:Maven核心组件先去本地的.m2目录下的库中去寻找依赖或者插件,如果本地库里没有,如果配置了私服则上私服去下载依赖或者插件,如果私服上没有,则上中央服务等Maven服务器起下载。因此,所有的依赖和插件都源于中央服务器。可是在有些苛刻环境下,是不允许局域网和外网有任何连接,而又想使用Maven来构建项目,那怎么办呢?以下将讲述具体步骤:

1)寻找一台可以联网的电脑,在上边搭建nexus私服;

2)配置setting.xml文件,使得本地开发环境依赖nexus私服:

首先在<mirrors>标签下添加:

<mirror>
                <id>nexus</id>
                <mirrorOf>*</mirrorOf>
                <name>Human Readable Name for this Mirror.</name>
                <url>http://localhost:8080/nexus/content/groups/public</url>
             </mirror>
             然后再<profiles>标签下添加:

<profile>
                <id>nexus</id>
                <repositories>
                  <repository>
      <id>central</id>
                    <url>http://central</url>
      <releases><enabled>true</enabled></releases>
                    <snapshots><enabled>true</enabled></snapshots>
                  </repository>
                </repositories>

<!--必须配置以下插件库依赖,这样Maven才会百分之百依赖私服,否则Maven在私服上找不到插件,在等待一点时间以后,就会自己去中央服务器上去下载,加上如下配置,则不会绕过私服。-->
                <pluginRepositories>
                       <pluginRepository>
                         <id>central</id>
                         <!--这个地址已经无所谓了-->
                         <url>http://central</url>
      <releases><enabled>true</enabled></releases>
      <snapshots><enabled>true</enabled></snapshots>
      </pluginRepository>
                  </pluginRepositories>              
           </profile>
           最后,在<settings>标签下添加以下配置,激活上边的<mirror>

<activeProfiles>
             <activeProfile>nexus</activeProfile>
           </activeProfiles>

如果不理解镜像<mirror>的含义,则可以查下其他资料。只有强行控制maven使之依赖于私服,才能在封闭的局域网内进行maven开发,否则maven仍然会上中央服务器去下载依赖和插件,则会出现错误。

3)使用maven搭建开发环境,并完成clean、package、test等动作。总之一个目的:使得nexus可以下载尽量多的插件和依赖。

4)拷贝nuxus(可能是bundle的形式或者是在war的形式)和.m2的兄弟目录sonatype-work文件夹到局域网的web服务器上(当然能用usb接口,或者其他传输工具,否则只能跳楼了),然后启动web服务器。

5)使用上边介绍的配置方式配置局域网内的开发机setting.xml文件,使之完全依赖于部署在局域网内的私服。

至此,部署完毕。这里注意刚才的snatype-work文件夹,打开这个目录,可以看到在其下的nexus文件夹里存储了nexus的很多数据,如索引、依赖、插件等。其中storage中存储的是中央服务器、第三方组件等。大家可以自己打开研究下。

另外,这样可能在某些情况下,发现局域网内部署的私服上的插件和依赖不够用,就可以采用上边的方式在此在可以上网的机器上引入模拟局域网内的开发,使得引入需要的插件和依赖。如果已经在局域网内的私服上部署了一些自己开发的组件,为了不影响之前的工作,可以从局域网内把sonatype-work文件再拷贝到可以上网的电脑上,再次重复上边的步骤。以上的办法未必是解决这个问题的最好办法,仅供参考,如有更好的方法,欢迎各位网友留言赐教。

如何在不允许联网的环境下使用Maven开发的更多相关文章

  1. 在win10环境下搭建 solr 开发环境

    在win10环境下搭建 solr 开发环境 2017年05月30日 09:19:32 SegaChen0130 阅读数:1050   在win10环境下搭建 solr 开发环境 安装环境  Windo ...

  2. Centos7.4环境下搭建Python开发环境(虚拟机安装+python安装+pycharm安装)

    目录 一.安装 Centos7.4虚拟机 二.安装 python3.6.7 三.安装 pycharm 一般情况下,大家都是在 Windows平台下进行 Python开发,软件安装和环境搭建都非常&qu ...

  3. 【ARM-Linux开发】Linux环境下使用eclipse开发C++动态链接库程序

    Linux环境下使用eclipse开发C++动态链接库程序 Linux中也有类似windows中DLL的变成方法,只不过名称不同而已.在Linux中,动态链接叫做Standard Object,生成的 ...

  4. idea环境下建立maven工程并运行scala程序

    idea中scala编程环境及建立maven工程 1.下载idea软件并破解:http://blog.csdn.net/nn_jbrs/article/details/70139178 2.安装sca ...

  5. eclipse,myeclipse开发环境下,maven远程部署到tomcat7服务器(图文)

    有的人想在eclipse写java web 项目,通过maven也是一种实现的方法,可以实现java web 项目打包成war,发布到tomcat. 在pom.xml文件的build增加下面的代码,相 ...

  6. windows环境下搭建ffmpeg开发环境

           ffmpeg是一个开源.跨平台的程序库,能够使用在windows.linux等平台下,本文将简单解说windows环境下ffmpeg开发环境搭建过程,本人使用的操作系统为windows ...

  7. 【转】在Eclipse环境下配置Servlet开发环境

    配置这个真心坑···浪费我一下午时间,而且去网上找了一圈资料发现都不靠谱呀= = 于是自己写一个,防止忘记了 一.配置前准备 你需要下载三个东西 Eclipse J2EE:http://www.ecl ...

  8. 记录一下自己总结出来的,在内网环境下使用maven打包的各种方法,包括各种常用的打包方式(一)

    (一)内外网代理仓库搭建 想了一下,先用这个MAVEN安装部署的说明随笔,作为自己的第一篇技术帖,往后会陆陆续续将自己研究的心得发出来,留下脚印.希望有大神可以指点 一 .文章主要解决问题说明 1) ...

  9. 【大数据系列】windows环境下搭建hadoop开发环境使用api进行基本操作

    前言 搭建完hadoop集群之后在windows环境下搭建java项目进行测试 操作hdfs中的文件 版本一 package com.slp.hadoop274.hdfs; import java.i ...

随机推荐

  1. 第二周作业xml学习情况

    1.xml简介 可扩展标记语言是一种很像超文本标记语言的标记语言. 它的设计宗旨是传输数据,而不是显示数据. 它的标签没有被预定义.您需要自行定义标签. 它被设计为具有自我描述性. 它是W3C的推荐标 ...

  2. shell 数值比较和字符串比较

    1. 数值比较 -eq        是否相等(equal) -gt         是否大于(greater than) -ge       是否大于等于(greater and equal tha ...

  3. 递归的可视化(Fibonacci)

    递归的可视化 修改递归函数,使其能够显示打印出每次函数递归调用的形参的值. 每一级调用的输出都带有一级缩进,就是使得程序的输出清晰.有趣并且有含义. 思路 以斐波那契数列为例,假设n=5,递归的形参如 ...

  4. T1订正记-AC自动机-从树到图

    AC自动机已经足够棒了. 但是,好像有时还是要TLE的. 一般的AC自动还是比较好,如果在某些情况下还是会被卡掉,像是这个水题 考试的感觉 我看到这个题后,我清清楚楚的知道,这是个AC自动机+栈. 经 ...

  5. 使用plsql导入dmp文件缺少imp*.exe

    在C:\app\Administrator\product\11.2.0\client_2\BIN 找到imp.exe 导入

  6. ie8不支持伪类选择器的解决方案

    引用jQuery的插件jquery.pseudo.js插件内容: (function($){ var patterns = { text: /^['"]?(.+?)["']?$/, ...

  7. 数的计数(noip2001,动态规划递推)

    题目链接: 普通版: https://www.luogu.org/problemnew/show/P1028 数据加强版: https://www.luogu.org/problemnew/show/ ...

  8. luogu 5月月赛 #A

    T29693 取石子 题目描述 Alice 和 Bob 在玩游戏 他们有 n 堆石子,第 i 堆石子有ai​ 个,保证初始时 ai​≤ai+1​(1≤i<n) . 现在他们轮流对这些石子进行操作 ...

  9. POJ-1200-Crazy Search(字符串Hash)

    Crazy Search Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 33142 Accepted: 9079 Descrip ...

  10. 4 SQL 数据更新

    4 数据更新 4-1 数据的插入(INSERT语句的使用方法) 通过create table语句创建出来的表,可以将其比作一个空空如也的箱子.只有把数据装入到这个箱子后,它才能称为数据库.用来装入数据 ...