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

posted @ 2018-12-17 15:52  Hypergroup  阅读(222)  评论(0)    收藏  举报