maven使用(二)

maven依赖

1. 依赖的范围
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

groupId、artifactId和version合称gav,它们三个确定一个唯一的jar
scope表示jar包使用的范围,scope有三个参数,分别是:compile、test、provided
maven在编译、测试和部署(运行)时,各自使用一套classpath

compiletestprovided
编译×
测试
部署(运行)××
2. 依赖排除

当用gav的方式引入spring-context.jar时,maven会自动引入其他jar包,比如spring-aop.jarspring-beans.jar等。像这种依赖关系还有很多。
我们可以使用排除依赖的方式,排除不需要的jar包

<exclusions>
	<exclusion>
		<groupId>org.springframework</groupId>
    	<artifactId>spring-beans</artifactId>
	</exclusion>
</exclusions>
3. 依赖的传递性

如果A.jar依赖于B.jar,B.jar依赖于C.jar。如果B.jar与C.jar的依赖范围是compile,则A.jar也依赖于C.jar。

  • 依赖原则-路径长度不同:最短优先原则
    如果A模块依赖于B模块,B模块依赖于junit.jar且其之间的范围为compile。
    如果A模块自身也依赖于junit.jar,与B模块引用的版本不一样。
    如果A模块引用B模块之后,A模块依然使用的是自身引用的junit.jar
  • 依赖原则-如果路径长度相同
    • 同一个pom.xml里引用了两个版本不同的Jar,后面的覆盖前面的(尽量不要在pom.xml文件里引入多个相同的jar)
    • 如果一个A模块分别引用了B模块和C模块,B模块和C模块又都引用了版本不同的同名jar包,则A先引用的模块的jar包覆盖后引用的。
4. 模块之间的依赖

如果A模块依赖于B模块,则将B模块install到本地仓库,A模块引用就可以了,如下例。

<dependency>
      <groupId>org.santiago.maven</groupId>
      <artifactId>HelloWorld</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>
5. maven声明周期

Maven共有三套生命周期

  • clean:清理项目
  • default:构建项目
  • site:建立和发布项目站点

分别归纳一下每套生命周期中所用的命令

  • clean生命周期

    • pre-clean(执行一些清理前需要完成的工作)
    • clean (清理上一次构建生成的文件,最常用)
    • post-clean(执行一些清理后需要完成的工作)
  • default生命周期
    default生命周期定义了真正构建时所需要的执行的所有步骤,它是生命周期中最核心的部分,包含内容很多,这里只列举几个常用的。

    • process-sources(处理项目主资源文件,将src/main/resources目录的内容经过处理后,复制到项目输出的主classpath目录中)
    • compile(编译项目主源码,编译src/main/java目录下的java文件至项目输出的主classpath目录中)
    • process-test-source(处理项目测试资源文件。对src/test/resources目录)
    • test-compile(编译项目的测试代码)
    • test (使用单元测试框架运行测试,测试代码不会被打包或部署)
    • package (接受编译好的代码,打包成可发布格式)
    • install (发布到本地仓库)
    • deploy (发布到远程仓库)
  • site生命周期
    site生命周期建立和发布项目站点。Maven能够基于POM所包含信息,自动生成一个友好的站点,方便团队交流和发布项目信息。
    一共包含四阶段,这里离列举两个常用的

    • site (生成项目站点文档)
    • site-deploy(将生成的项目站点发布到服务器上)

命令行与生命周期

  • mvn clean:调用clean生命周期的clean阶段。实际执行为pro-clean和clean阶段
  • mvn compile :实际执行default 从头到compile阶段
  • mvn clean install:调用clean生命周期的clean阶段和default生命周期的install阶段,实际调用了pro-clean ,clean ,以及default生命周期的从validate到install所有阶段。其余命令使用诸如此类。
  • mvn tomcat:run (一键启动)
  • mvn test 编译并运行了test中内容
  • mvn package:打包
  • mvn install :发布项目到本地仓库
  • mvn deploy:发布项目到远程仓库

其余常用命令

  • 查看项目中真正的依赖 mvn dependency:list
  • 让项目中依赖有效的jar包成层次性显式 mvn dependency:tree
  • 分析当前项目依赖jar中潜在的危险 mvn dependency:analyze
  • 分析结果中:Used undeclared dependencies意思为在项目中使用,但是没有显式声明的依赖。Unused declared dependencies。意思为项目未使用,但是显式声明的依赖。对于这样的依赖不应该简单删除声明,而是仔细分析。因为dependency:analyze只分析编译主代码和测试代码需要用到的依赖。
  • 在编译的时候跳过测试类 mvn compile -Dmaven.test.skip =true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值