Maven的使用
1.maven概述
maven是一个使用java编写的跨平台的创新的开源的项目管理工具,Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。主要包括:
项目对象模型(Project Object Model) : POM对象模型,每个maven工程中都有一个pom.xml文件,定义工程所依赖的jar包、本工程的坐标、打包运行方式。
依赖管理系统(基础核心) : maven通过坐标对项目工程所依赖的jar包统一规范管理。
maven定义一套项目生命周期 : 清理、初始化、编译、测试、报告 、打包、部署、站点生成
一组标准集合 : maven工程有自己标准的工程目录结构、定义坐标有标准。
maven 管理项目生命周期过程都是基于插件完成的
 
它负责管理项目开发过程中的几乎所有的东西:
 
版本 : maven有自己的版本定义和规则
构建 : maven支持许多种的应用程序类型,对于每一种支持的应用程序类型都定义好了一组构建规则和工具集。
输出物管理 : maven可以管理项目构建的产物,并将其加入到用户库中。这个功能可以用于项目组和其他部门之间的交付行为。
依赖关系 : maven对依赖关系的特性进行细致的分析和划分,避免开发过程中的依赖混乱和相互污染行为
文档和构建结果 : maven的site命令支持各种文档信息的发布,包括构建过程的各种输出,javadoc,产品文档等。
项目关系 : 一个大型的项目通常有几个小项目或者模块组成,用maven可以很方便地管理
移植性管理 : maven可以针对不同的开发场景,输出不同种类的输出结果。
2.maven仓库
在maven中,仓库有本地仓库和远程https://blog.csdn.net/caomiao2006/article/details/40401517
仓库配置
本地仓库
在<settings></settings>中配置
<localRepository>F:/JavaWeb/Maven/repo</localRepository>
中央仓库
在apache-maven-3.5.3\lib\maven-model-builder-3.5.3.jar\org\apache\maven\model\pom.xml文件中
其他远程仓库
在项目的pom.xml中配置
mirror的配置
在setting.xml文件中的mirrors标签中
<mirror>
	<id>alimaven</id>
	<name>aliyun maven</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
	<mirrorOf>central</mirrorOf>        
</mirror>
项目构建时jar的找寻顺序
本地仓库  ---> 中央仓库 --> 其他远程仓库
当时如果我们配置mirror,第一步依然是本地仓库,后续步骤根据mirror的mirrorOf属性,如果mirror是替代中央仓库的,即mirrorOf的值为central
本地仓库  ---> mirror --> 其他远程仓库(当我们在pom.xml配置仓库时会有这一步)
3.常用命令
项目构建
mvn archetype:create -DgroupId=packageName -DartifactId=projectName (maven3.0.5以上版本舍弃了create,使用generate生成项目)
卡在Generating project in Interactive mode与之后的Choose a number or apply filter:
在这里,你需要做出一个选择,选择一种archetype,archetype就是一个模板,Maven将根据模板创建和模板匹配的项目,完整的archetype的信息你可以在http://repo1.maven.org/maven2/archetype-catalog.xml查看,目前有7000多种archetype,我们只需要关心和我们项目相关的,或者了解一些通用的(前面20多种)就可以了,在这里,我选择2(创建一个使用Hibernate、Spring和Spring MVC的web应用),默认是选择15(一个简单的带有单元测试的java工程)
发现是获取archetype-catalog.xml导致的(浏览器访问http://repo1.maven.org/maven2/archetype-catalog.xml,需要等待很长时间才能获取到)。
其实下载下来会发现Maven提供的archetype太多了,今天(18-12-17)已经有2309种,有时候只是想创建一个quickStart项目模板,实在不需要花时间下载这个archetype-catalog.xml。
解决方法有两种:
1、指定-DarchetypeCatalog=internal参数,使用archetype插件内置的catalog。
2、把archetype-catalog.xml的信息存储到本地,然后指定-DarchetypeCatalog=local参数,使用本地路径下的~/.m2/archetype-catalog.xml。
如果本地没有archetype-catalog.xml,有评论说可以通过mvn archetype:crawl获取archetype-catalog.xml到~/.m2/repositoriy/archetype-catalog.xml,不过我下载只有寥寥几种archetype,
可以访问之后http://repo1.maven.org/maven2/archetype-catalog.xml,下载到当前时刻最完整的。虽然archetype增加速度比较快,但是我感觉我们能使用的范围还是比较窄的,没有必要要求最新的。
3.把对中央仓库的访问转向阿里镜像仓库,但我们使用阿里镜像archetype只有比较少的几种,此时我们只能选择这仅有的几种,无论是使用数字的方式,还是通过DarchetypeArtifactId来指定
Define value for property 'version' 1.0-SNAPSHOT  选择1.0-SNAPSHOT即可
Y: :如果上面没有问题直接回车即可
也可以使用DarchetypeArtifactId来代替上面的数字方式,有时候需要带上DarchetypeGroup
mvn archetype:generate -DgroupId=packageName -DartifactId=projectName -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
-DinteractiveMode=false不适用交互,如果是JavaWeb
mvn archetype:generate -DgroupId=packageName -DartifactId=projectName -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
要导入这个项目到Eclipse中,需要生成一些 Eclipse 项目的配置文件,在projectName目录下
mvn eclipse:eclipse
在JavaWeb项目中
mvn eclipse:eclipse -Dwtpversion=2.0 打成war包,不加是jar包,也可以使用
mvn eclipse:eclipse
+
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-eclipse-plugin</artifactId>
	<version>2.9</version>
	<configuration>
		<downloadSources>true</downloadSources>
		<downloadJavadocs>false</downloadJavadocs>
		<wtpversion>2.0</wtpversion>
	</configuration>
</plugin>
试一下这条命令能否执行成功
mvn archetype:generate -DgroupId=packageName -DartifactId=projectName -DarchetypeGroupId=com.github.akiraly.reusable-poms -DarchetypeArtifactId=simple-java-project-with-spring-hibernate-querydsl-archetype -DarchetypeVersion=3 -DarchetypeCatalog=local -DinteractiveMode=false
个人感觉开发工具像eclipse,idea里面使用的maven构建项目是基于这些命令的
mvn archetype:generate >> test.txt --->查序号时使用
mvn site
<reporting>
     <plugins>
         <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-javadoc-plugin</artifactId>
             <version>2.10.4</version>
         </plugin>
         <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-project-info-reports-plugin</artifactId>
             <version>2.9</version>
         </plugin>
     </plugins>
 </reporting>
4.pom文件讲解
参考的资源:
关于开源协议http://www.runoob.com/w3cnote/open-source-license.html
https://www.cnblogs.com/xWanted/p/4866130.html

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号