maven 总结

173 阅读2分钟

介绍

maven 是Apache旗下一个开源项目,用Java写成,主要用于Java项目的管理,主要的用途:

  • jar包管理:将jar包统一到仓库,减少项目工程的文件大小。
  • 项目的一键构建(tomcat:run)、提供项目的 compile、test、package、运行、install、employ
  • 将一个大项目拆分成一个个子项目,方便管理。

生命周期

  • clean生命周期:包含pre-clean、clean、post-clean
  • build(default):validata complie test package verify install deploy
  • site

不同的生命周期包含一系列阶段,执行每个阶段都会将这个周期内之前的阶段都执行一遍。每个阶段是使用插件目标来完成任务的,maven会根据不同的打包类型(war/jar)将不同的插件目标绑定到不同的阶段,有些插件目标没有绑定到阶段,那么可以单独调用,比如tomcat:run 目标,可以通过tomcat插件使用。

也可以手动将插件目标绑定到某个阶段。

 <plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-antrun-plugin</artifactId>
   <version>1.1</version>
   <executions>
      <execution>
         <id>id.pre-clean</id>
         <phase>pre-clean</phase>
         <goals>
            <goal>run</goal>
         </goals>
         <configuration>
            <tasks>
               <echo>pre-clean phase</echo>
            </tasks>
         </configuration>
      </execution>
   </executions>
   </plugin>

比如上面的pom就将一个antrun:run 目标绑定到了pre-clean阶段。

仓库

a.png

依赖scope

编译 测试 运行 例子
compile Y Y Y spring-core
provide Y Y jsp、servlet
runtime Y Y jdbc驱动()
test Y junit
依赖传递

a a.png

依赖冲突
  • 第一声明优先原则。在pom文件定义依赖,先声明的依赖为准。

  • 路径近者优先原则。所以可以自己添加jar包的方式解决冲突。

    例如:A 依赖spring-beans-4.2.4, A 依赖B依赖spring-beans-3.0.5,则spring-beans-4.2.4优先被依赖在A中, 因为spring-beans-4.2.4相对spirng-beans-3.0.5被A依赖的路径最近。

  • 排除依赖

  • 锁定版本。

    	<dependencyManagement>
    		<dependencies>
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-context</artifactId>
    				<version>${spring.version}</version>
    			</dependency>
    		</dependencies>
    	</dependencyManagement>
    

    注意版本锁定,但是并没有添加依赖,后面还需要添加依赖,但是可以不指定版本。

打包方式

  • jar
  • pom(父工程,子工程需要设置父工程)
  • war(web工程)

maven安装

maven 可以编译项目,所以需要指定JAVA_HOEM。