`

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

 
阅读更多

转载自:http://blog.csdn.net/achilles12345/article/details/9263295   

前言: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安装包,下载后可用

    综上所述,Maven作为Java开发的重要工具,简化了项目的构建流程,提高了开发效率,其强大的依赖管理和自动化构建功能对于任何Java开发者来说都是不可或缺的。通过正确安装和熟练使用Maven,可以有效地提升开发团队的...

    优质收藏资料Maven.docx

    要使用Maven,首先需要在本地计算机上安装并配置环境变量。可以从Maven官方网站下载最新版本,解压后配置环境变量。配置完成后,可以通过命令行输入`mvn -v`检查是否配置成功。同时,还需要配置本地仓库的位置,这在...

    ssm+angular+maven

    在实际使用这个项目时,需要确保本地Maven仓库已配置正确,如果没有本地仓库或仓库过大无法上传,联网状态下Maven会自动从中央仓库下载所需依赖。完成这些配置后,通过Maven的命令行工具(如mvn clean install)可以...

    车联网PaaS云建设实践.pptx

    性能测试通过LoadRunner执行,例如在不同环境下对比原环境和PCF环境的性能,如吞吐量Throughput和每秒事务处理TPS。测试环境包括原环境、PCF固定配置环境、PCF自动弹性伸缩环境以及经过SQL优化的PCF环境。 **性能...

    gradle-4.10.1-all.zip和gradle-4.10.1-bin.zip

    这对于那些没有全局Java环境或者希望在不联网的环境中工作的开发者来说非常方便。 **3. `gradle-4.10.1-bin.zip`** 相较于`all`版本,`bin`版本是一个精简的分发包,只包含运行Gradle所需的二进制文件,比如Gradle ...

    appium mac环境搭建(真机)

    1. **系统环境**:确保拥有能够联网的Mac电脑或虚拟机,要求Xcode 8+、Mac OS X 10.11+,并且拥有有效的Apple ID账号。 2. **安装Homebrew**:使用命令行安装Homebrew。 ```shell /usr/bin/ruby -e "$(curl -...

    有关在ssh3中slf的配置

    SLF4J并不实际进行日志输出,而是作为一个接口,允许开发者选择任何支持SLF4J的日志实现,如Logback或Log4j。在项目中,通常会有一个`slf4j-api.jar`文件,它提供了SLF4J的API供其他代码使用。然后,你需要选择一个...

    SBT ivy2 scala构建工具jar包

    这些文件通常用于设置本地开发环境,或者在不联网的情况下为项目提供必要的构建工具和依赖。 标签中的"SBT ivy2 scala jar包"进一步强调了这个压缩包的内容,其中的jar包不仅涉及到SBT本身,还可能包含了Ivy2的相关...

    帮助文档1

    系统采用Spring Boot框架和Maven作为构建工具,依赖于JDK 1.8,并需要在联网环境下运行,以确保所有在线依赖能够正常加载。 首先,为了开发和运行此系统,你需要在Eclipse环境中安装Maven插件和Spring插件。这两个...

    gradle几个离线包

    标题中的“gradle几个离线包”指的是Gradle的不同版本被打包成离线安装包,供开发者在无网络环境下使用。在开发过程中,如果网络不稳定或速度慢,下载Gradle的完整版本可能会浪费大量时间。离线包则可以预先下载并...

    java卡牌游戏源码-HTTPServer:基于Netty、JSON-RPC的分布式弱联网游戏服务端

    一般来说弱联网包含单机游戏和联网游戏的特点,既允许离线游戏又允许联网游戏。普遍适用于交互需求较低的游戏,例如消消乐、卡牌、跑酷等。通常使用HTTP协议实现客户端与服务端之间的通讯,客户端请求一次,服务端...

    基于Web+ssm+vue的数字家庭网站设计与实现.zip

    在实际开发过程中,开发者可能遵循敏捷开发原则,采用Maven或Gradle进行项目管理,使用Git进行版本控制,使用MySQL作为数据库存储家庭数据,使用Eclipse或IntelliJ IDEA作为开发工具。此外,可能还涉及到前后端交互...

    java炸弹人游戏

    开发者可能使用了XML或者JSON等数据格式来存储关卡布局,允许玩家通过编辑这些文件创建自己的地图,然后在游戏中加载。这样的设计需要一个友好的关卡编辑器界面,让不具备编程知识的玩家也能轻松操作。 即时聊天...

    基于Android实现QQ登录.zip

    3. **配置权限**:在AndroidManifest.xml中添加必要的权限,如INTERNET、ACCESS_NETWORK_STATE等,以允许应用联网并进行身份验证。 4. **初始化SDK**:在应用的启动Activity中初始化QQ SDK,传入之前获取的AppID,...

    基于J2ME的手机象棋源程序

    【描述】中的"手机网络象棋"表明该程序不仅包含传统的单机模式,还可能支持联网对战功能,允许玩家通过移动网络与其他用户进行实时对弈,增加了游戏的互动性和趣味性。"的确很不错,值得分享啊"是对这款手机象棋游戏...

    mongodb-java-driver源码依赖库

    为了避免这类问题,将依赖库下载到本地`.m2`目录可以确保在后续的开发过程中直接使用本地副本,无需再次联网下载。 MongoDB Java Driver的核心组件包括: 1. **`com.mongodb.client.MongoClients`**:这是创建...

    arcims地理信息系统示例

    7. **集成开发环境(IDE)支持**:为了开发和调试ArcIMS应用,开发者通常会使用如Eclipse或IntelliJ IDEA这样的IDE,它们提供了与ArcIMS相关的插件,简化了开发过程。 8. **地图渲染和符号化**:ArcIMS允许自定义...

    Jbotsim Library

    3. **工业界**:工程师可以在产品开发初期使用 JBotSim 快速原型化,评估不同的设计方案。 #### 五、技术架构 JBotSim 的技术架构主要包括以下几个组成部分: 1. **核心模块**:负责处理网络模拟的基本逻辑,如...

    gradle-offline-dependencies-plugin:将项目依赖项与您的代码一起存储,以实现可复制的脱机版本

    然而,在没有网络或网络不稳定的情况下,这可能会成为困扰。为了解决这个问题,"gradle-offline-dependencies-plugin" 插件应运而生。 这个插件的主要目标是帮助开发者将项目的所有依赖项存储到本地,以便在离线...

    geoserver_war版本

    总结起来,"geoserver2.20_war版本" 是一个包含特定版本的 GeoServer WebGIS 服务,以 WAR 文件形式提供,便于在 Web 服务器上部署,配合其他文件(如 README 和 license 文件)帮助用户了解和使用该服务。...

Global site tag (gtag.js) - Google Analytics