1 maven 安装
conf文件夹下setting.xml文件
1 localRepository标签
此标签用于存储maven本地仓库的路径,默认路径在C:\Users\weijingli(此为当前电脑登录用户)文件夹下.
2 proxies标签
存放是否使用中央仓库标签
3 mirrors标签
存放镜像,访问外部镜像的网址。有中央仓库和私服之分。
1.2 maven网上查找依赖
访问以下网址即可
1.3 maven官网下载历史版本
maven官网==》download==》previous release ==》archives==》选择相应版本即可
2 maven idea配置
2.1 创建maven项目
file==》new==》project==》maven==》next==》选择groupid和artifactid
(项目名,项目名.模块名如:com.imooc.Maven Maven-data)==》next==》Finish即可
2.2 普通项目转maven
右键工程名--》Add Framework Support--》选择maven--》OK--》输入相应坐标即可,完善pom.xml.
右键pom.xml--》maven--》reimport--》导入相关依赖
2.3 idea 引入依赖报错解决方案
idea关闭,删除本地仓库,打开idea重新引入依赖(run application 这时已经是OK,只是dependencies可能飘红:file-->invalidate caches即可)
2.4 idea如何自动下载源码和文档
File => Setting => Build, Execution, Deployment => Build Tools => Maven => Importing => Automatically download
勾选 Sources 和 Documentation
2.5 右键pom,没有maven选项
原因是右键pom.xml,-->maven-->remove projects
解决方法,右键add as mavenproject
2.6 maven项目查看jar包依赖树
terminal窗口->mvn dependency:tree
将依赖树copy出来查看即可
3 maven eclipse配置
3.1 eclipse如何重新加载pom.xml
右键项目==>maven==>update project configration==>确定
如果还是不行,那么将jar包,放到本地路径下吧
3.2 eclipse误删target文件夹
1.进入本地仓库的repository\org\apache\maven\plugins文件下
2.删除所有plugin
3.重启eclipse
4.重新clean 、install
3.3 eclipse 修改maven默认仓库路径
1 下载安装maven
2 配置maven相关环境变量
3 eclipse==》windows==》preference==》maven==》installations==》选择本地安装的路径==》apply==》Ok
即可
3.4 eclipse和maven关联
windows==》preference==》User Settings 选取已经安装的maven包
windows==》preference==》installations 选取已经安装的maven setting.xml文件
4 maven STS配置
4.1 支持下载源码及文档
打开开发STS(或eclipse)工具,在菜单栏选择
window –preferences – maven
勾选 下载源码 和 javadoc文档 ,自动关联
4.2 配置本地 maven 环境
打开 maven - installations ,点击对窗口 add 按钮
配置maven插件安装路径和名称
点击finish之后,再勾选配置maven插件
4.3 配置 settings.xml 位置,加载到本地仓库
点击 User Settings,将maven的核心配置文件setting.xml的磁盘路径加载到工具中
4.4 设置本地仓库的索引,才能使用仓库中下载的jar.
选择菜单栏Window –showView –other - maven - maven repository 打开 maven 仓库管理视图
重建本地仓库索引
4.5 如何重新加载pom文件生成在本地仓库生成api jar包
c 上述操作完成后 右键service子项目,maven ->update project ->选中service子项目,点击ok,进行pom文件依赖的jar包更新
d 右键父项目,run as maven install,注意:这个方法生成了api jar包,解决了昨天一直生成不了apijar包的问题
参考:
https://blog.csdn.net/yqj234/article/details/104719318/
N maven 开发常见问题
N.1 maven部 报错 Pointcut is not well-formed: expecting 'name pattern' at character position
错误原因:配置aop报错:原因是配置切点表达式的时候报错了,红色标大字体部分,必须有空格
<aop:config>
<aop:aspect id="moocAspectAOP" ref="moocAspect">
<!-- 声明切入点:从哪里开始执行 -->
<!-- 执行com.imooc.aop.schema.advice.biz包下的所有Biz结尾的java类中的所有方法时 -->
<aop:pointcut expression="execution(* com.imooc.aop.schema.advice.biz.*Biz.*(..))" id="moocPointCut"/>
<aop:before method="before" pointcut-ref="moocPointCut"/>
</aop:aspect>
</aop:config>
N.2 maven部 解惑 No bean named 'beanScope' available
问题:
执行Junit测试的时候,报错如下:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'beanScope' available
分析:
经过查询,
http://www.cnblogs.com/miaoying/p/5793490.html
这个兄弟和我犯的错误一样,错误原因是,xml配置文件没有加载。
但是我查看我的target文件下的xml都已经加载了呀,真tmd见了鬼了。
解决:
因为xml直接放在src路径下,xml文件多了显得结构臃肿,所以,我把配置的xml全部放到和main平级的resource目录下。
可能因为这个原因才不加载吧。
1 所以更改pom.xml文件,修改其xml配置文件加载路径(红色字体部分)
<!-- 加载xml -->
<resources>
<resource>
<directory>src/resource/</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
2 重新build
再进行测试,问题,已经完美解决。
N.3 maven部 eclipse Dmaven.multiModuleProjectDirectory system propery is not set
eclipse ==》右键项目==》run as maven compile ==》执行后报错如下:
-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
问题原因:
maven版本太高
解决方案:
1 换低版本的maven 或者用下边的方法(实践可行)
2 Window->Preference->Java->Installed JREs->Edit
在Default VM arguments中设置
-Dmaven.multiModuleProjectDirectory=$M2_HOME
N.4 maven部 Failed to execute goal org.apache.maven.plugins
19-2-23 下午12时59分48秒: Build errors for ddwei-dao; org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources (default-resources) on project ddwei-dao: Execution default-resources of goal org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources failed: Unable to load the mojo 'resources' (or one of its required components) from the plugin 'org.apache.maven.plugins:maven-resources-plugin:3.0.2'
maven报错,如上,经核查,是pom.xml中的版本为3.0.2 maven-resources-plugin插件 版本不对,更新版本之后就可以了
N.5 maven部 Could not transfer artifact org.apache.maven.plugins:maven-resources-plugin:pom:2.6 from/to central
maven安装完成,环境变量配置没有问题,cmd窗口运行mvn compile的时候报错如下
Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of its dependencies could not be resolved:
Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.6:
Could
not transfer artifact
org.apache.maven.plugins:maven-resources-plugin:pom:2.6 from/to central
(https://repo.maven.apache.org/maven2): Connect to
repo.maven.apache.org:443 [repo.maven.apache.org/151.101.52.215] failed:
Connection timed out: connect -> [Help 1]
解决方案:
1 经红色字体可以得知,不能在https://repo.maven.apache.org/maven2这个网址下载到maven-resources-plugin:jar:2.6jar包,于是我浏览器访问了红色网址,可以访问的到。
2 我把从其他地方得到的2.6的maven-resources-plugin jar包和pom相关文件放到maven指定的目录下,可是错误依旧,尝试失败。
3 从网上搜到这种问题的解决方案之一:是在pom.xml中加入依赖如下,
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
</dependency>
有些人用这个方法解决了问题,但是我的问题依旧;
4 开始放大招了,最后搜索到一种方法,直接把maven安装文件夹的conf文件夹下的 settings.xml文件配置如下:
<mirrors>
<!-- maven官方镜像 -->
<mirror>
<id>mirrorId</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name </name>
<url>http://repo1.maven.org/maven2/</url>
</mirror>
<!-- 又一个镜像 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://central.maven.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- 阿里云镜像2 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- junit镜像地址 -->
<mirror>
<id>junit</id>
<name>junit Address/</name>
<url>http://jcenter.bintray.com/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
,最后问题得以解决。
这种问题出现的原因就是,联通的网段,无法访问maven.org网站。
5 当我配置完成后,maven 中心库可以把mavenx相关的jar包配置下来,但是junit4依然一直下载不成功。
后来上网搜索了下,settings.xml里面有个代理 标签proxies,打开这个代理标签才能访问central 库外的junit库,我就解开了注释,没想到还真成功了。
<proxies>
<!-- proxy
| Specification for one proxy, to be used in connecting to the network.
|-->
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>proxyuser</username>
<password>proxypass</password>
<host>proxy.host.net</host>
<port>80</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
</proxies>
但是保持打开状态的话,当central库里的东西报错。
当我把所有当下来的东西全部删除,并且把proxy 注释掉之后,又能够把maven和junit同时当下来,并且不报错。
问题是解决了,但是不清楚什么原因,如果有知道的朋友可以留言我
最后感谢博主提供了答案:
https://blog.csdn.net/shycx/article/details/7726600
N.6 maven部 报错 Error creating bean with name BeanPostProcessor before instantiation of bean failed;
报错原因:缺少jar包依赖
在pom.xml中加入依赖即可
<dependency>
<groupId> org.aspectj</groupId >
<artifactId> aspectjweaver</artifactId >
<version> 1.8.7</version >
</dependency>
N.7 maven部 报错 Compilation of Maven projects is supported only if external build is started
maven project Tab页面--》reimport all maven projects
N.8 maven部 报错 No active profile set, falling back to default profiles: default
Springboot项目,原先配置过多模块启动,且是链式的调用,
方式a 将链式启动改为常规启动方式即可,见https://i.cnblogs.com/posts/edit;postId=14296095 4.1
方式b 链式调用web启动打开即可
new SpringApplicationBuilder(SpringBootStudyApplication.class) //.bannerMode(Banner.Mode.OFF) // .web(WebApplicationType.NONE) .run(args); }
N.9 mvn : 无法将“mvn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
多是maven环境变量没有配置