前言: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. Python3基础教程(十八)—— 测试

    编写测试检验应用程序所有不同的功能.每一个测试集中在一个关注点上验证结果是不是期望的.定期执行测试确保应用程序按预期的工作.当测试覆盖很大的时候,通过运行测试你就有自信确保修改点和新增点不会影响应用程 ...

  2. zabbix设置发送消息的时间

    需求:比如我有两个报警的媒介:邮件和微信,但是下班之后,晚上我不希望手机一直响,打扰我睡觉,邮件无所谓,可以24h发送 分析:那现在就需要把微信分时间段发送:比如06:00-24:00   这个时间点 ...

  3. Qt中常用的类

    QApplication 应用程序类                管理图形用户界面应用程序的控制流和主要设置 QLabel 标签类                                提供 ...

  4. HTML页面中解决内容元素随窗口变化布局变乱问题

    1.给body加上一个min-width最小宽度,以px为单位,这样当页面变小时,当达到你所设置的最小宽度,body的宽度不再改变,超出的部分会用横向滚动条显示,其内所有元素的布局也不会受影响. 2. ...

  5. [LUOGU] [NOIP2017] P3960 列队

    题目描述 Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n \times mn×m 名学生,方阵的行 ...

  6. centos7 中源码安装nginx

    使用nginx有一段时间了,还是有很多东西不懂的,在这里做一下自己学习过程中的一些整理,能使自己得到提升. 1.环境:centos7 1511  最小化安装 2.下载nginx,可以在系统中下载,也可 ...

  7. 树莓派 - RasberryPi推送数据到cloudMQTT

    创建用户 在https://www.cloudmqtt.com/上创建一个帐户 转到右上角的控制面板 点击"创建"按钮 安装lib sudo pip install paho-mq ...

  8. vue 源码自问自答-响应式原理

    vue 源码自问自答-响应式原理 最近看了 Vue 源码和源码分析类的文章,感觉明白了很多,但是仔细想想却说不出个所以然. 所以打算把自己掌握的知识,试着组织成自己的语言表达出来 不打算平铺直叙的写清 ...

  9. 上海苹果维修点分享苹果电脑MACBOOK故障维修常见案例

    苹果的电子设备无论是外观和性能都是无与伦比的美丽,很多开发者都开始选用苹果电脑macbook.近年来苹果售后维修点来维修苹果电脑的用户也越来越多,我们上海苹果维修点就整理分享了一些苹果电脑MACBOO ...

  10. 配置工程文件dll编译后copy路径

    放到工程文件的最后面的配置节点: 下面的配置节点中生成路径换成实际的相对路径就可以了 修改:Prject.csproj 文件里面的配置节点  project配置节点里面的最后面 <Target ...