求助:无网络环境下离线安装jfree及pdfngreporter Maven插件
没问题,咱们一步步解决无网络环境下的Maven插件本地安装问题!你之前用mvn install还触发联网,大概率是因为这些插件本身还有依赖项,Maven默认会去中央仓库找。所以核心是要把**所有需要的Jar包(包括插件自身和它们的依赖)**都准备好,再逐个安装到本地仓库。具体操作如下:
首先得在有网络的环境(比如另一台能上网的电脑)上,把以下文件都下载好:
- jfree相关的核心Jar包:比如
jfreechart-xxx.jar和它的依赖jcommon-xxx.jar(jfreechart必须依赖jcommon才能正常工作) - pdfngreporter的Jar包:比如
pdfngreporter-xxx.jar - 这两个库的所有间接依赖Jar包:如果不知道依赖有哪些,你可以在有网的电脑上建个临时Maven项目,把这两个库的依赖写进
pom.xml,然后执行mvn dependency:copy-dependencies,Maven会把所有依赖自动下载到项目的target/dependency目录里,一次性就能拿全。
小提醒:下载的时候一定要对应好版本号,和你项目
pom.xml里要引用的版本保持一致!
Maven的install:install-file命令是专门用来手动安装本地Jar到仓库的,完全不需要联网。咱们分别处理两个库:
安装jfree相关组件
假设你下载的是jcommon-1.0.36.jar和jfreechart-1.5.3.jar(版本号换成你需要的),打开终端执行以下命令:
先装jcommon(依赖优先)
mvn install:install-file -Dfile=jcommon-1.0.36.jar -DgroupId=org.jfree -DartifactId=jcommon -Dversion=1.0.36 -Dpackaging=jar
再装jfreechart
mvn install:install-file -Dfile=jfreechart-1.5.3.jar -DgroupId=org.jfree -DartifactId=jfreechart -Dversion=1.5.3 -Dpackaging=jar
安装pdfngreporter
假设你的pdfngreporter Jar是pdfngreporter-2.0.0.jar,执行这条命令(注意坐标要和你项目里的引用完全匹配):
mvn install:install-file -Dfile=pdfngreporter-2.0.0.jar -DgroupId=com.github.vandeseer -DartifactId=pdfngreporter -Dversion=2.0.0 -Dpackaging=jar
划重点:
groupId、artifactId、version这三个参数必须和你项目pom.xml里写的一模一样!如果不确定,你可以在有网时查中央仓库里该插件的官方坐标,或者打开Jar包的MANIFEST.MF文件找相关信息。
如果装完所有Jar后,Maven还是去连repo.maven.org,那你需要做这两件事:
- 检查项目依赖坐标:确认
pom.xml里引用jfree和pdfngreporter的坐标和你安装到本地仓库的完全一致,没有拼写错误或者版本不匹配。 - 开启Maven离线模式:
- 临时方案:执行Maven命令时加上
-o参数,比如mvn clean install -o,这样Maven就只会用本地仓库的内容,不会去远程仓库找。 - 全局方案:修改Maven的
settings.xml文件(一般在~/.m2/settings.xml或者Maven安装目录的conf/settings.xml),添加离线配置:<settings> <offline>true</offline> </settings>
- 临时方案:执行Maven命令时加上
你可以打开本地Maven仓库目录(默认是~/.m2/repository),看看对应的路径下有没有安装好的Jar和自动生成的Pom文件,比如org/jfree/jfreechart/1.5.3/下是否有jfreechart-1.5.3.jar和jfreechart-1.5.3.pom。然后在你的项目里执行mvn compile -o,如果能正常编译,就说明安装成功了。
内容的提问来源于stack exchange,提问作者Ashwini

