之前写代码想在后端实现下geoJSON的创建与读写,但在maven添加gt-geojson依赖的时候,结果提示在仓库里找不到该依赖?!网上搜了说改成ali镜像或者科学上网。
然后我就先去看看我的maven环境,在terminal输入mvn -v,结果提示command not found: mvn?!那我之前写项目用的是啥?后面发现我一直以来使用的都是IDEA自带的Maven(Bundled (Maven 3)),瞬间尬住。
于是乎,开始了自己的本机maven安装。
安装安装是简单,mac/win上殊途同归,简单过一过
稍微复杂点的是配置以及使用(虽说后面才知道其实maven用的上的命令也就那么几个)
- 下载地址:Maven – Download Apache Maven
下载最新版本的apache-maven-x.x.x-bin.tar.gz(我下的时候是3.8.5)
解压后送到/usr/local/maven/maven3.8下
环境配置-
打开环境变量配置文件(视使用的终端决定)
open ~/.zshrc # 如果是 bash下,则 open ~/.bash_profile
-
添加maven配置
# 添加Maven到环境变量 export MVN3_HOME=/usr/local/maven/maven3.8 export PATH=$MVN3_HOME/bin:$PATH
-
保存并关闭
-
使环境变量生效
source ~/.zshrc
-
测试环境
echo $M3_HOME echo $PATH mvn -v
主要是配置镜像仓库和本地仓库(用于缓存)位置
配置文件位于$MVN3_PATH/conf/settings.xml
本地仓库/path/to/local/repo
阿里云仓库镜像PS:这个目录如果不注释且不修改在window下就是默认在安装maven的盘上生成/path/to/local/repo的文件夹,不要问我是怎么知道的。。
后记aliyunmaven * aliyun https://maven.aliyun.com/repository/public
装完之后我就迫不及待的去在项目里试刚装的Maven,然而。。
1) Error injecting constructor, java.lang.NoSuchMethodError: org.apache.maven.model.validation.DefaultModelValidator: method()V not found
出现了上面的问题,改回原来版本(IDE自带的3.6.3)就没问题
搜了下说是当前IDEA版本和Maven版本不兼容(3.8.5是最新的——2022/6/9)
gt-geojson的问题还是没解决,网上搜说是ali镜像里也是空包。。。
后来找到一篇,对geotool的引入,结合maven镜像和仓库进行了解释:
-
不是所有的jar包都被包含在maven中央仓库(central)中,如果中央仓库没有该资源,需要配置第三方仓库(公开的源)。如geotools就需要配置OSGeo Release Repository仓库
-
阿里源/清华源镜像只是提供了中央仓库的资源镜像,其中mirrorOf只能配置为central,不要设置为*(我看到好多都是直接让写*的)。用*会导致所有仓库的url都被替换,以至于像geotools的源本该发向OSGeo Release Repository仓库而被改为了阿里源。一般来说是将每个镜像的mirrorOf改为该镜像对应的仓库id一致 。
-
是否需要配置仓库?通过Maven官网可以查看项目,如项目页面的标签栏写了Central,那么就说明中央仓库有,否则就需要在pom.xml中添加对应的标签的仓库来拉取资源。
参考osgeo OSGeo Release Repository https://repo.osgeo.org/repository/release/ false true org.geotools gt-geojson 25.2
- [Maven中GeoTools的引入 - Maven 的 repository 与 mirror_Sky_Tree_Delivery的博客](



