开头先随便扯扯:任何一个技术的功能都是很强大的,我们不需要全部掌握,没那么多时间去研究它,也没有必要,我们只需要抓住重点就好了,掌握应用到项目中的部分就好了,毕竟大多数人也不想成为大牛,只想老老实实敲代码,做个程序员,好了,下面介绍maven了:
首先maven是什么呢?来让我们看看官网https://maven.apache.org是怎么说的?
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.
嗯,说的非常好,言简意赅.
1.用maven有什么好处呢?
1.很方便的管理jar
2.可以搭建父子工程,使工程框架更清晰,耦合度低
3.便于工程运行,打包
2.好了现在介绍maven的pom.xml
pom.xml里面可以配置很多东西:比如开发者姓名,职务,还有各种,如果你想将项目开源呢,也可以加上自己的名字,就像很多github上的项目一样
1 <project xmlns="http://maven.apache.org/POM/4.0.0" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"> 4 <!--父项目的坐标--> 5 <parent> 6 <artifactId/> 7 <groupId/> 8 <version/> 9 </parent> 10 11 <!--声明项目描述符遵循哪一个POM模型版本--> 12 <modelVersion></modelVersion> 13 <!--项目的唯一标识符,通常使用包名+项目名。如com.sina.news生成jar/war的时候路径就在../com/sina/news下--> 14 <groupId>com.sina.news</groupId> 15 <!-- 构件的标识符,它和groupID一起唯一标识一个构件。 16 换句话说,你不能有两个不同的项目拥有同样的artifactID和groupID; 17 在某个特定的groupID下,artifactID也必须是唯一的.--> 18 <artifactId></artifactId> 19 <!--项目产生的构件类型,例如jar、war--> 20 <packaging>war</packaging> 21 <!--项目当前版本--> 22 <version>1.0-SNAPSHOT</version> 23 24 <build> 25 <!--这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。--> 26 <resources> 27 <resource> 28 <!--是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。--> 29 <filtering/> 30 <!--描述存放资源的目录,该路径相对POM路径--> 31 <directory/> 32 <!--包含的模式列表,例如**/*.xml.--> 33 <includes/> 34 <!--排除的模式列表,例如**/*.xml--> 35 <excludes/> 36 </resource> 37 </resources> 38 39 <!--产生的构件的文件名,默认值是${artifactId}-${version}。--> 40 <finalName/> 41 42 <!--子工程可以引用的默认插件信息。 43 该插件配置项直到被引用时才会被解析或绑定到生命周期。给定插件的任何本地配置都会覆盖这里的配置--> 44 <pluginManagement> 45 <!--使用的插件列表--> 46 <plugins> 47 <!--plugin元素包含描述插件所需要的信息。--> 48 <plugin> 49 <!--插件在仓库里的groupID--> 50 <groupId/> 51 <!--插件在仓库里的artifactID--> 52 <artifactId/> 53 <!--被使用的插件的版本(或版本范围)--> 54 <version/> 55 <!--在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。--> 56 <executions> 57 <!--execution元素包含了插件执行需要的信息--> 58 <execution> 59 <!--执行目标的标识符,用于标识构建过程中的目标,或者匹配继承过程中需要合并的执行目标--> 60 <id/> 61 <!--绑定了目标的构建生命周期阶段,如果省略,目标会被绑定到源数据里配置的默认阶段--> 62 <phase/> 63 <!--配置的执行目标--> 64 <goals/> 65 <!--配置是否被传播到子POM--> 66 <inherited/> 67 <!--作为DOM对象的配置--> 68 <configuration/> 69 </execution> 70 </executions> 71 72 <!--项目引入插件所需要的额外依赖--> 73 <dependencies> 74 <!--参见dependencies/dependency元素--> 75 <dependency> 76 ...... 77 </dependency> 78 </dependencies> 79 <!--任何配置是否被传播到子项目--> 80 <inherited/> 81 <!--作为DOM对象的配置--> 82 <configuration/> 83 </plugin> 84 </plugins> 85 </pluginManagement> 86 87 <!--自身工程使用的插件列表,样式同上差不多--> 88 <plugins> 89 <!--参见build/pluginManagement/plugins/plugin元素--> 90 <plugin> 91 <groupId/><artifactId/><version/><extensions/> 92 <executions> 93 <execution> 94 <id/><phase/><goals/><inherited/><configuration/> 95 </execution> 96 </executions> 97 <dependencies> 98 <!--参见dependencies/dependency元素--> 99 <dependency> 100 ...... 101 </dependency> 102 </dependencies> 103 <goals/><inherited/><configuration/> 104 </plugin> 105 </plugins> 106 </build> 107 108 <!--子工程--> 109 <modules/> 110 111 <!--发现依赖和扩展的远程仓库列表。--> 112 <repositories> 113 <!--包含需要连接到远程仓库的信息--> 114 <repository> 115 <!--远程仓库唯一标识符。可以用来匹配在settings.xml文件里配置的远程仓库--> 116 <id></id> 117 <!--远程仓库名称--> 118 <name></name> 119 <!--远程仓库URL--> 120 <url></url> 121 </repository> 122 </repositories> 123 124 <!--依赖的jar--> 125 <dependencies> 126 <dependency> 127 <groupId></groupId> 128 <artifactId></artifactId> 129 <version></version> 130 <!--依赖范围。在项目发布过程中,帮助决定哪些构件被包括进来。欲知详情请参考依赖机制。 131 - compile :默认范围,用于编译 132 - provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath 133 - runtime: 在执行时需要使用 134 - test: 用于test任务时使用 135 - system: 需要外在提供相应的元素。通过systemPath来取得 136 - systemPath: 仅用于范围为system。提供相应的路径 137 - optional: 当项目自身被依赖时,标注依赖是否传递。用于连续依赖时使用--> 138 <scope>compile</scope> 139 140 <!--当计算传递依赖时,从依赖构件列表里,列出被排除的依赖构件集。即告诉maven你只依赖指定的项目,不依赖项目的依赖。 141 此元素主要用于解决版本冲突问题--> 142 <!--就是你依赖a.jar.1.0版本,而它又依赖b.jar.1.0版本,而你自己的依赖里面已经有b.jar.2.0版本,这样直接依赖会冲突的,
所以要排斥掉不需要的b.jar.1.0版本,这就是用来排除依赖的--> 144 <exclusions> 145 <exclusion> 146 <artifactId></artifactId> 147 <groupId></groupId> 148 </exclusion> 149 </exclusions> 150 </dependency> 151 </dependencies> 152 </project>