在断网情况下使用idea和maven

一、需求:

须知:

  1. 公司开发环境不能连外网,而项目需要使用scala、maven的shade插件、maven打包的provided功能,如果不使用maven的情况下实现shade和provided功能,很麻烦。
    1. 如果不用shade插件的relocation功能,手动改源码的import然后重新打包,pmml-model依赖google的guava,不仅仅pmml-model和guava的包名要改,pmml-model内部import guava的代码也要改,而且有可能guava覆盖了别的依赖(maven中如果出现相同的jar,一般只会把高版本或者遇到的第一个打包),那改起来就没完没了了。
    2. provided功能也要手动剔除jar,极为繁琐

1. 在32位系统安装idea的社区版(依赖32位jdk),并手动安装scala插件

2. 离线模式下使用maven:

 2.1 复制本地仓库(依赖、插件)(本地仓库是可以直接复制的,新电脑中第一次会建立仓库的索引)

 2.2 setting文件中设置离线模式,idea中配置离线模式和其他maven配置

 2.3 maven本地仓库是可以直接复制的。maven仓库中的jar都是放在包名结构的目录中,所以无法简单的把项目依赖导出来然后复制进去。为了一个项目,不能复制全部的仓库,冗余。只能给项目设置1个单独的本地仓库,然后install项目,maven就会把项目的本地仓库创建好,然后再把这个仓库复制到离线环境

二、在32位系统安装idea的社区版,并手动安装scala插件

  1. idea内有个模块叫JBR,11只支持64位,8支持32位,下载8的即可
  • 注意:32位idea启动需要32位的jdk,i586就是32位的
    https://www.oracle.com/technetwork/java/javase/archive-139210.html
    在断网情况下使用idea和maven_第1张图片
    在断网情况下使用idea和maven_第2张图片

在断网情况下使用idea和maven_第3张图片

  1. 进入网站下载scala的插件(zip格式,无需解压),注意版本的匹配。放到任意位置都可,然后setting/plugins,选择从磁盘安装

    • 网址(需要f**k wall)https://plugins.jetbrains.com/plugin/1347-scala
      在断网情况下使用idea和maven_第4张图片
      在断网情况下使用idea和maven_第5张图片

三、离线模式下使用maven

须知:

  1. maven的插件也属于依赖的一种,也通过gav标识,也放在maven仓库中,路径就是gav
    在断网情况下使用idea和maven_第6张图片
  2. maven在offline下,如果pom中删除掉1个插件,那么这个插件如果在仓库中没有也会报错
  3. idea的maven设置为offline后,所有的mvn命令都会加上–offline参数。idea中设置offline后,即使settings没设置离线,也会是离线模式。idea中的配置是最优先的。

1.生成项目的仓库

maven仓库默认放着所有项目的依赖和插件,一般都很大,仅仅为了一个项目复制整个本地仓库太浪费。
而如果只复制所需项目的,1个项目的直接依赖 + 间接依赖起码100个。而且maven仓库中的依赖都是放在多级目录下的,还要创建对应的目录,不可能手动完成。
➡️➡️➡️
可在idea中为这个项目设置单独的1个本地仓库(pom中没法设仓库)(这个本地仓库的路径可以自动生成)。然后install项目,完成后把这个本地仓库复制到离线环境即可。

2.idea中配置maven

为了避免复制1个maven安装包,直接用idea自带的maven
settings中配置本地仓库
idea中配置setting、本地仓库、离线模式

3.额外添加依赖,就从外面下好复制到开发环境,然后进入到maven所在目录

mvn install:install-file -Dfile=jar包的位置 -DgroupId=groupId -DartifactId=artifactId -Dversion=version -Dpackaging=jar
就会自动安装到本地仓库
所谓install,就是复制到本地仓库并且设置好gav的目录结构,这样别的关联的依赖就可以找得到了。

此时就可以在离线模式下正常开发了

你可能感兴趣的:(idea,maven)