如何在不允许联网的环境下使用Maven开发

前言: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文件再拷贝到可以上网的电脑上,再次重复上边的步骤。以上的办法未必是解决这个问题的最好办法,仅供参考,如有更好的方法,欢迎各位网友留言赐教。

时间: 2024-10-24 19:54:15

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

windows环境下搭建ffmpeg开发环境

ffmpeg是一个开源.跨平台的程序库,可以使用在windows.linux等平台下,本文将简单讲解windows环境下ffmpeg开发环境搭建过程,本人使用的操作系统为windows 7,集成开发环境为Visual Studio 2005,ffmpeg版本为2.2.有人可能会说都什么年代了,还VS 2005,现在VS 2010/2012/2013都出了.本人电脑也安装了VS2010,每次打开,伴随着硬盘指示灯的闪烁,以及硬盘的吱吱响声,过了许久才弹出闪屏页面,此时你的思绪可能已经飘到了南极,启

Windows环境下搭建Objective-C开发环境

Windows环境下搭建Objective-C开发环境 目前来说,如果真的想用Xcode来运行Objective-C程序,那么可以用虚拟机装Mac OS X或者装黑苹果(在PC机上安装苹果的系统,不建议),不过这两种方式都有些麻烦,以下介绍GNUstep以及Code blocks来实现,具体方法如下. 在我的云盘下载所需工具:链接: http://pan.baidu.com/s/1i34b8wP 密码: wd9e 解压后按照一下顺序进行安装 gnustep-core-0.28.0-setup.e

Eclipse 环境下安装PhoneGap开发插件

phoneGap开发跨所有移动平台软件已经成为未来移动终端开发的总趋势,如何在大家所熟悉的Eclipse IDE中快速安装PhoneGap开发插件,介绍如下: 点击help-->install new software-->add连接:http://svn.codespot.com/a/eclipselabs.org/mobile-web-development-with-phonegap/tags/r1.2.91/download/ 然后一路next,选择重新启动Eclipse,出现左边所示

Ubuntu Linux环境下的Android开发环境的配置

在Android底层开发中需要用到的工具有:JDK6或以上版本:Eclipse3.4或以上版本:ADT;CDT;Android SDK:Android NDK:交叉编译环境:Linux内核源代码:Android源代码:用于调试开发板的串口工具:minicom. 以下为搭建Android开发环境的步骤: 1.安装JDK:下载JDK的压缩包后,将其解压缩,然后在Linux终端输入如下的命令打开profile文件来设置PATH环境变量. # gedit /etc/profile 打开profile文件

ueditor1.4.3在.net环境下的vs开发工具中集成经验

Ueditor是个很不错的在线富文本编辑器,几个项目一直使用它.最近想更新版本,发现新版1.4.3与旧版的部署方式完全不一样了,官网文档介绍的是直接放在iis下的部署说明,没有提到在vs开发工具中如何集成,自己新建了一个测试项目琢磨了一会,测试没啥问题,记录下给大家分享. 项目结构如下图: 因为我创建的是web项目类型,所以把controller.ashx以项目形式的一般处理程序迁移过去,并重命名成ueditor.ashx(记得在ueditor.config.js修改服务器统一请求接口路径).另

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

eclipse,myeclipse开发环境下,maven远程部署到tomcat7服务器(图文) 有的人想在eclipse写java web 项目,通过maven也是一种实现的方法,可以实现java web 项目打包成war,发布到tomcat. 在pom.xml文件的build增加下面的代码,相应的地方修改账号和密码,还有发布的名称 , 第一次使用需要下载很多构建. 需耐心等待 ... ... ... <build> <finalName>test_server</final

mac环境下使用emacs开发scala

好多人都会问 scala 的编辑工具用啥? eclipse ? intellij ? emacs? sublime? 都可以,不说那个好,怕引起争议,多累啊,我这里只是大致介绍下emacs 中开发scala的方式. 首先介绍下基本工具,sbt,不管你是使用那个编辑工具,sbt都是需要的,就像是maven,也有人不喜欢sbt,说是慢,就喜欢用maven,我还是坚持建议用sbt, 其实一点都不慢,用下"~compile"试试. sbt的参考https://github.com/CSUG/r

Linux环境下使用eclipse开发C++动态链接库程序

Linux中也有类似windows中DLL的变成方法,只不过名称不同而已.在Linux中,动态链接叫做Standard Object,生成的动态链接文件为*.so.详细请参考相关文档. 开发环境:Eclipse 3.4.2 G++:4.3.2 1. 创建动态链接库 (1)在Eclipse中创建新的C++工程 File->New->Project->C++->C++ Project,选择Shared Library. (2)创建源代码文件 File->New->Sourc

eclipse,myeclipse开发环境下,maven一键部署到tomcat7(图文)

有的人想在eclipse写java web 项目,通过maven也是一种实现的方法,可以实现java web 项目打包成war,发布到tomcat. 在pom.xml文件的build增加下面的代码,相应的地方修改账号和密码,还有发布的名称 <build> <finalName>daka_server</finalName> <!-- 原有代码 --> <plugin> <groupId>org.codehaus.mojo</gr