maven详解

  • 菜鸟教程详细介绍
  • POM: Project Object Model
  • modelVersion 模型版本需要设置为 4.0
  • 所有的 POM 都继承自一个父 POM(无论是否显式定义了这个父 POM)。查看默认super dom:mvn help:effective-pom
  • SCM:Source Control Management
  • pluginManagement、dependencyManagement:不会被立即解析,而是当子项目声明时,才会解析并引用。用来统一管理项目的相关版本信息
  • mvn clean dependency:copy-dependencies package
    • clean, package 是构建阶段
    • dependency:copy-dependencies 是目标
  • Maven构建的生命周期
    • mvn post-clean 时,会执行 pre-clean, clean, post-clean
    • mvn build 主要过程:validate, compile, test, package, verify, install, deploy
  • Maven仓库
    • local: .m2/respository/
    • center: 远程的仓库,由 Maven 社区管理
    • remote: Maven 将从远程仓库中下载该 pom.xml 中声明的所依赖的(在中央仓库中获取不到的)文件

仓库

Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为国内的仓库。以阿里仓库为例:

  • 方法一:修改 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>
  • 方法二:修改 pom.xml 文件
<repositories>  
        <repository>  
            <id>alimaven</id>  
            <name>aliyun maven</name>  
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
            <releases>  
                <enabled>true</enabled>  
            </releases>  
            <snapshots>  
                <enabled>false</enabled>  
            </snapshots>  
        </repository>  
</repositories>

execution

<plugins>    
    <!--plugin元素包含描述插件所需要的信息。-->    
    <plugin>    
     	<!--插件在仓库里的group ID-->    
     	<groupId/>    
     	<!--插件在仓库里的artifact ID-->    
     	<artifactId/>    
     	<!--被使用的插件的版本(或版本范围)-->    
     	<version/>    
     	<!--是否从该插件下载Maven扩展(例如打包和类型处理器),由于性能原因,只有在真需要下载时,该元素才被设置成enabled。-->    
     	<extensions/>    
     	<!--在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。-->    
     	<executions>    
      		<!--execution元素包含了插件执行需要的信息-->    
      		<execution>    
       			<!--执行目标的标识符,用于标识构建过程中的目标,或者匹配继承过程中需要合并的执行目标-->    
       			<id/>    
       			<!--绑定了目标的构建生命周期阶段,如果省略,目标会被绑定到源数据里配置的默认阶段-->    
       			<phase/>    
       			<!--配置的执行目标-->    
       			<goals/>    
       			<!--配置是否被传播到子POM-->    
       			<inherited/>    
       			<!--作为DOM对象的配置-->    
       			<configuration/>    
      		</execution>    
     </executions>    
     <!--项目引入插件所需要的额外依赖-->    
     <dependencies>    
      	<!--参见dependencies/dependency元素-->    
      	<dependency>    
       	......    
      	</dependency>    
    </dependencies>         
   	<!--任何配置是否被传播到子项目-->    
   	<inherited/>    
    <!--作为DOM对象的配置-->    
    <configuration/>    
  </plugin>
</plugins> 

dependencyManagement 和 dependencies 的区别

  • dependencyManagement 统一管理依赖版本,申明后,子模块中只需在 dependencies 中指明 groupId, artifactId 即可,版本依赖dependencyManagement中申明。若子项目不指定,则不引入模块
  • 子模块完全继承parent的dependencies并加载
  • 最佳实践:parent统一管理项目依赖包版本

dependency scope

  • compile 编译、测试、打包、运行 阶段。默认值
  • provided 相当于 compile,但运行环境已经包含了,不需要我们打包包含,比如:web运行环境已经包含 servlet-api.jar
  • runtime 测试、运行 阶段
  • test 测试 阶段
  • system 类似provided,但是被依赖项不是从maven库找,而是从系统找
   <dependencies>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
      </dependency>
 
      <dependency>
         <groupId>ldapjdk</groupId>
         <artifactId>ldapjdk</artifactId>
         <scope>system</scope>
         <version>1.0</version>
         <systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath>
      </dependency>
   </dependencies>

Maven 的 Snapshot 版本与 Release 版本

  • Snapshot 不稳定版本,maven会经常更新
  • Release 版本,有缓存,maven就不会去更新
  • 正式环境不能使用 Snapshot
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值