那些年与你度过的坑--Maven
1:maven的加载原理和生命周期
如果对ant有所了解的,那么maven在你的掌握下是及其的简单。Maven 提供了更加简洁的解决方案,在于本地仓库和远程仓库之间的来回旋转和加载。Maven 提供了更加简洁的解决方案。虽然每个maven版本的一些加载原理不一样,但是及其的相似。下面是几个核心的maven目录结构,担任着不一样的职责。
1.1:maven中远程和本地的工作流程切换。
说明:当进行jar的下载时,首先会根据<groupId>去本地找对应的包,没有才回去远程的仓库找。
备注:pom.xml重点信息透露
1.1.1:mirror指定要使用的存储库镜像站点,而不是给定的存储库。此镜像服务的存储库具有与此镜像的mirrorof元素匹配的ID。id用于继承和直接查找目的,并且必须在一组镜像中是惟一的。url是一个有效的国内外的镜像地址,必须有效。
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
一下是推荐的几个国内较快的镜像地址
http://maven.antelink.com/content/repositories/central/
http://maven.springframework.org/release/
http://maven.antelink.com/content/repositories/central/
http://mavensync.zkoss.org/maven2/
http://repository.jboss.com/maven2/
http://maven.aliyun.com/nexus/content/groups/public
http://repo1.maven.org/maven2/
1.2:maven的生命周期
1.2.1:安装maven
下载maven的安装包,解压后进行MAVEN_HOME的配置。如:
检查安装的maven
常用命令解析
mvn -version 查看maven的版本及配置信息
mvn archetype:create -DgroupId= DartifactId= 构建java项目
mvn archetype:create -DgroupId= DartifactId= -DarchetypeArtifactId=maven-archetype-webapp 创建web项目
mvn compile 编译项目代码
mvn package 打包项目
mvn package -Dmaven.test.skip=true 打包项目时跳过单元测试
mvn test 运行单元测试
mvn clean 清除编译产生的target文件夹内容,可以配合相应命令一起使用,如mvn clean package, mvn clean test
mvn install 打包后将其安装在本地仓库
mvn deploy 打包后将其安装到pom文件中配置的远程仓库
mvn eclipse:eclipse 将maven生成eclipse项目结构
mvn eclipse:clean 清除maven项目中eclipse的项目结构
mvn site 生成站点目录
mvn dependency:list 显示所有已经解析的所有依赖
mvn dependency:tree 以树的结构展示项目中的依赖
mvn dependency:analyze 对项目中的依赖进行分析,依赖未使用,使用单未引入
mvn tomcat:run 启动tomcat
2:maven的缓存机制
如果在本地仓库没有想要的jar包 或者因为网络等原因曹成jar下载一般不成功的jar包 下一次在去下载 maven是将缓存汇总的jar(不完整,失败的)包给你下载下来,所以该jar包还是有问题的。
处理方案:
将对应的jar所在的位置文件夹进行彻底的删除,或者直接将整个repotry删除,进行联网下载。