当前位置: 首页 > news >正文

maven之pom.xml

开头先随便扯扯:任何一个技术的功能都是很强大的,我们不需要全部掌握,没那么多时间去研究它,也没有必要,我们只需要抓住重点就好了,掌握应用到项目中的部分就好了,毕竟大多数人也不想成为大牛,只想老老实实敲代码,做个程序员,好了,下面介绍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>

 

转载于:https://www.cnblogs.com/jaro/p/8746552.html

相关文章:

  • tomcat的安装以及环境配置
  • Vue入门干货,以及遇到的坑
  • 茶馆小人书 (AFO)
  • Exp3 免杀原理与实践 20151220刘与生
  • jmeter分布式压力测试
  • 通过Nginx反向代理实现IP分流
  • 20172314 2017-2018-2 《程序设计与数据结构》第5周学习总结
  • matlab小记(四)
  • CQOI2018 游记 再见OI,既是反思,也是祝福
  • CPU的系统总线
  • OpenCV/OpenCL/OpenGL区别
  • 工厂方法模式
  • Spring Cloud学习笔记-007
  • Reverse Integer
  • W650DC_DD_CFL_Win64(刷八代CPUBios)
  • (三)从jvm层面了解线程的启动和停止
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • JavaScript 基本功--面试宝典
  • JavaScript对象详解
  • Java基本数据类型之Number
  • js如何打印object对象
  • passportjs 源码分析
  • python 学习笔记 - Queue Pipes,进程间通讯
  • vuex 笔记整理
  • 彻底搞懂浏览器Event-loop
  • 创建一种深思熟虑的文化
  • 代理模式
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 用jQuery怎么做到前后端分离
  • 如何在招聘中考核.NET架构师
  • ​ssh免密码登录设置及问题总结
  • # C++之functional库用法整理
  • # 透过事物看本质的能力怎么培养?
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (3)(3.5) 遥测无线电区域条例
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (未解决)macOS matplotlib 中文是方框
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET Remoting学习笔记(三)信道
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .Net 高效开发之不可错过的实用工具
  • .NET 中的轻量级线程安全
  • .NET 中让 Task 支持带超时的异步等待
  • .net打印*三角形
  • @Pointcut 使用
  • @Transactional类内部访问失效原因详解
  • []Telit UC864E 拨号上网
  • []串口通信 零星笔记
  • [Android学习笔记]ScrollView的使用
  • [BZOJ2208][Jsoi2010]连通数
  • [C++]priority_queue的介绍及模拟实现
  • [CISCN2019 华东南赛区]Web11