maven是一种很是流行的项目管理工具,它将项目依赖的jar包都变成了配置文件---pom.xml。java
maven经过pom文件读取须要哪些依赖包,而后到网上mavenRepository下载依赖包到本地。用到的依赖包以及相关文件都会下载到指定本地目录中,造成本地库。在编译项目时,再引入你的项目中。linux
结构以下图:git
maven源网址在国外,下载依赖包很是的缓慢甚至失败,因此想要顺畅得使用maven,还须要配置国内镜像。具体操做见下文github
它的优点在于maven结构的项目源码很是小,将动辄几MB,几十MB的依赖jar包,变成了几十个字节的配置文件。将项目源码从几百MB缩减到不到1MB,利于下载与上传。在github开源社区上使用很是普遍。web
几乎全部发布的jar包都已经支持maven,在各自的pom文件中,标注依赖了哪些jar包以及版本号。这样,maven就能够将多级依赖包都一并下载。大大简化依赖包下载工做。spring
发生依赖冲突时,找到引入依赖包的配置并去除(exclusion)依赖便可。经过使用界面化工具能够更方便得完成去除依赖操做。具体操做见下文apache
这里都使用eclipse来作说明,eclipse自带maven插件。windows
菜单栏 File --> new --> project ,搜索maven,选择maven projectapp
勾选 create a simple project (skip archetype selection),创建简单的项目,不使用模板。eclipse
建立完成后 结构以下
经常使用路径说明:
其余:
建议使用maven默认的目录结构,阅读他人,或者他人在阅读你的代码将变得更容易。使用非默认结构也能够在pom文件中进行配置。
项目名右键 --> configure --> convert to maven project 便可
因为普通java项目与maven项目结构不一样,须要移动原有文件到默认maven结构目录下,或者在pom文件中进行目录配置。
maven结构的项目,其项目配置都写在pom文件中,项目刷新须要使用 ALT+F5, 或者 项目名右键 --> maven --> update project。
pom里面除了配置依赖包,还有jdk版本、打包的配置(web包、可执行jar)等等。
pom文件中的配置项很是丰富,这里只作一些简单介绍。
mavenRepository网站上搜索选择你想要的依赖包名称,如spring-core
选择一个中意的版本
复制配置到pom文件中dependencies标签下便可。
maven根目录在C:\Users\{用户名}\.m2\
修改maven根目录下的conf文件夹中的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> </mirrors>
以后就能享受如飞的maven下载速度。
例如去除 common-logging 依赖
eclipse中打开pom文件切换到Dependency Hierarchy页面
选中commons-logging,右键 exclude maven artifact... 保存
依赖中commons-logging就消失了。
pom文件中表现为 增长了exclusion 去除了commons-logging
在Maven2中有了明确的生命周期概念,并且都提供与之对应的命令,使得项目构建更加清晰明了。主要的生命周期阶段:
若是要执行项目编译,那么直接输入:mvn compile便可,对于其余的阶段能够类推。阶段之间是存在依赖关系(dependency)的,如test依赖test-compile。在执行mvn test时,会先运行mvn test-compile,而后才是mvn test。
这些命令在eclipse中 项目名右键 run as --> maven build --> goals 输入框中使用
pom文件中增长配置
<build> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.6.0</version> </plugin> </plugins> </build>
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.0.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>***</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>
***填写mainClass
<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </build>
而后执行 maven package
生成打包文件在项目路径 target目录下 .jar/.war文件
maven除告终合eclipse使用 ,也是能够在windows linux下单独使用的。