河北常见网站建设价格/网络营销实训个人总结
JavaWeb片 配置开发环境-Maven
什么是Maven,Maven有什么用。
如果有过php开发经验,对Composer一定不会陌生。Maven有点像Composer但又不太一样。
可能是我个人开发习惯的问题,composer对于我来说,大部分是用来下载包,基本上是用到哪个下哪个,有时composer不好用,我还会手动下载包。当然,这么做造成的问题也是显而易见的,经常会造成依赖冲突的问题。而Maven则更像一个包的管理工具,他与项目的密切度更高。
php生涯没有用好composer,希望在Java生涯,能够用好Maven,减少依赖冲突,减少重复造轮子。
至于到底Maven是什么,Maven有什么用。这个问题就跟什么是面向对象一样。刚开始可能不好理解,用到最后,可能也不需要理解了。因为已经离不开了。 😃
提醒大家一下
Maven的核心思想:约定大于配置!
- 有约束,不要去违反!
Maven会规定好你该如何去编写我们的Java代码,必须按照这个规范来。
来吧。我们动手做第一个Maven项目
1.下载Maven
http://maven.apache.org/download.cgi#
下载之后解压
我习惯把开发环境都放在Library文件夹
mk ~/Library/maven
mv ~/downloads/apache-maven-3.6.3 ~/Library/maven/apache-maven-3.6.3
2.配置Maven环境变量
open ~/.bash_profile
添加两条 MAVEN_HOME M2_HOME maven的安装目录
export MAVEN_HOME=~/Library/maven/apache-maven-3.6.3
export M2_HOME=~/Library/maven/apache-maven-3.6.3
export PATH=$PATH:$M2_HOME/bin
重新加载环境变量
source ~/.bash_profile
3.检查Maven是否安装成功
mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /Users/xubainan/Library/maven/apache-maven-3.6.3
Java version: 1.8.0_281, vendor: Oracle Corporation, runtime: /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
4.配置镜像和本地仓库
阿里云官方提供的maven的镜像
https://developer.aliyun.com/mirror/maven
<mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url>
</mirror>
本地仓库
<localRepository>/Users/xubainan/Library/maven/apache-maven-3.6.3/maven_repo</localRepository>
5.第一次用IDEA创建Maven项目
我们用于webapp开发,所以选一个web模版
给项目起个名称。这里无所谓,这个项目我们最终不使用
这里要手动定位maven安装,不要用Bundled。
这里不手动定位的话,读不到配置文件
在看一线maven的配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rzQlGJGl-1613635522623)(/Users/xubainan/Library/Application Support/typora-user-images/image-20210218160015163.png)]
这里经常出现的问题就是idea会经常把配置文件改成maven的默认配置文件。而这里有时根本就没有配置文件。
所以,把它手动定位回来
到此maven安装和配置成功了
出现的问题
找不到mvn命令
zsh: command not found: mvn
可能的原因有两个,一个是没有配置好java的环境变量。因为maven也是java程序
第二个原因就是maven的安装路径在环境变量中配置的不对。
这两个坑我都踩过
第一个原因,配置mac的java的环境
大部分从网上找来的方式都是类似于这么配置的
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
export CLASS_PATH=$JAVA_HOME/lib
通过搜索发现,苹果有这样一篇答疑
https://developer.apple.com/library/archive/qa/qa1170/_index.html
大致意思就是mac OS X 10.5以后,提供了一个/usr/libexec/java_home 工具,可以动态的查找安装在max OS X上面的最高版本java的运行位置,后面也介绍了这种方式的优点。
所以我配置java的环境变量是
export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=$JAVA_HOME/bin:$PATH
export CLASS_PATH=$JAVA_HOME/lib
另外可以通过$(/usr/libexec/java_home -v 1.8) 来选择JDK的版本
第二个坑,其实第二个坑是我自己埋的
当初创建maven安装目录的时候用的是
mk ~/Library/maven
Mac系统 ~Library指的是当前user下面的Library 并不是系统的Library
因此设置MAVEN_HOME 和M2_HOME 的时候,一定要=~/Library/maven/apache-maven-3.6.3
而不要=/Library/maven/apache-maven-3.6.3
否则一定找不到mvn
报错
Could not transfer artifact junit:junit:pom:4.11 from/to aliyunmaven (https://maven.aliyun.com/repository/public): /~/library/maven/apache-maven-3.6.3/maven_repo/junit/junit/4.11/junit-4.11.pom.part.lock (No such file or directory)
本地库的指向不对应该写成,这里能用~ 来表示当前user 必须写全路径/Users/xubainan/Library/maven/apache-maven-3.6.3/maven_repo