Maven离线编译方法 |
您所在的位置:网站首页 › maven离线模式本地依赖打包 › Maven离线编译方法 |
Maven离线编译方法
2021-11-19 < view all posts有时候我们在把jar包传到某些连不上Maven库的环境后,才发现其中有一点问题需要修改代码。这时候可以到开发机上重新打包再传一遍,但是如果经常需要这样来回就显得有点麻烦。这时候我们可以有另一个选择,就是利用Maven的offline模式在离线环境里面重新编译。 因为离线环境是下载不到Maven依赖包的,首先我们要在开发环境把依赖都打包好,传到离线环境里面: 1、给开发机器新建一个本地Maven依赖库(原本缓存的依赖库一般占用空间会比较大,而其中很多都是当前项目用不到的,因此新建一个空的最好)。Maven的 settings.xml 文件中, 配置为新的地址。 2、在开发机执行 mvn dependency:go-offline ,缓存所有的依赖到依赖库中 3、但是, mvn dependency:go-offline 不会缓存一些默认Maven插件的jar包(例如resources plugin等)。这些插件是打包需要用到的,不过我们通常不在项目的pom文件中声明,这是因为它们在Maven自带的super pom当中被隐式引入了。但导出依赖的时候它们就不能被自动导出了,所以我们需要用help目标来强制缓存这些插件,运行: mvn assembly:help compiler:help enforcer:help exec:help failsafe:help install:help jar:help resources:help surefire:help4、我们还需要执行一下准备在离线环境运行的命令,例如 mvn clean package 。否则之后还是会缺少插件,比如clean插件,在执行前是不会自动缓存的。 5、把Maven、开发机的本地依赖库、代码打包传到离线环境 6、配置离线环境中Maven的 settings.xml ,包括 和 true 这两项 7、把Maven加入PATH,chmod赋权 8、这里有一个额外的步骤,需要删除本地依赖库中所有的 *.repositories 、 *.sha1 、 *.lastUpdated 文件,否则即使在离线模式,Maven还是会尝试联网,然后报错(应该是Maven的bug): find -iname "*.repositories" -exec rm -f {} \; && \ find -iname "*.sha1" -exec rm -f {} \; && \ find -iname "*.lastUpdate" -exec rm -f {} \;网上也有帖子说直接把依赖库中 .jar 以外的文件全删了也行 9、在离线环境用 -o -nsu 参数执行需要的Maven目标,例如 mvn -nsu -o clean package ,就可以成功离线编译打包了 其中,-o表示离线模式,-nsu表示不检查snapshot版本的更新 This blog is written in EPUB. The original file is available for download. Feel free to comment by raising an issue . |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |