Maven重要知识点梳理

1.生命周期

清理clean:将以前编译得到的旧文件class字节码文件删除
编译compile:将java源程序编译成class字节码文件
测试test:自动测试,自动调用junit程序
报告report:测试程序执行的结果
打包package:动态Web工程打War包,java工程打jar包
安装install:将项目打包并且发布到本地仓库,供其他项目使用
部署deploy:将最终的包复制到远程的仓库,以让其它开发人员与项目共享

注意:生命周期分为三套,clean单独一个生命周期,所以执行 mvn -install 并不会执行clean

2.scope—依赖的范围

1、compile,默认值,适用于所有阶段(开发、测试、部署、运行),本jar会一直存在所有阶段。
2、provided,只在开发、测试阶段使用,目的是不让Servlet容器和你本地仓库的jar包冲突 。如servlet.jar。
3、runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
4、test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
5、system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

3.高级特效

1.传递性

WebMavenDemo项目依赖JavaMavenService1 JavaMavenService1项目依赖JavaMavenService2

pom.xml文件配置好依赖关系后,必须首先mvn install后,依赖的jar包才能使用。

WebMavenDemo的pom.xml文件想能编译通过,JavaMavenService1必须mvn install
JavaMavenService的pom.xml文件想能编译通过,JavaMavenService2必须mvn install

注意:非compile范围的依赖是不能传递的

4.Build

1.配置属性

<build>
  
  <finalName>WebMavenDemofinalName>
  
  <resources>
    
    <resource>
      
      <directory>src/main/javadirectory>
      
      <includes>
        <include>**/*.xmlinclude>
      includes>
      
      <excludes>
        <exclude>**/*.txtexclude>
          <exclude>**/*.docexclude>
      excludes>
    resource>
  resources>
  
  <plugins>
    <plugin>
      <groupId>org.apache.maven.pluginsgroupId>
      <artifactId>maven-compiler-pluginartifactId>
      <version>2.1version>
      <configuration>
        
        <source>1.8source>
        
        <target>1.8target>
      configuration>
    plugin>
    
    <plugin>
      <groupId>org.apache.maven.pluginsgroupId>
      <artifactId>maven-resources-pluginartifactId>
      <version>2.1version>
      <executions>
        <execution>
          <phase>compilephase>
        execution>
      executions>
      <configuration>
        <encoding>UTF-8encoding>
      configuration>
    plugin>
    
    <plugin>
      <groupId>org.apache.maven.pluginsgroupId>
      <artifactId>maven-war-pluginartifactId>
      <version>2.1version>
      <configuration>
        
        <warName>WebMavenDemo1warName>
      configuration>
    plugin>
  plugins>
build>

2.Flatten Maven Plugin

场景:使用maven开发的模块化应用,可以发布出去供他人使用,比如各种开源库,使用时,要么是继承,要么是以依赖的形式引入。但我们看各种库的pom.xml文件,通常都比较简单,一般只有一些必要的依赖信息,作为开发者,通常认为使用者也就需要这些信息。但是真正开发时,对应模块的pom可能比较复杂,可能要使用各种插件,引用各种依赖,组件间有继承关系,甚至根据不同的参数走不同的分支,即使用profile机制等,maven默认在部署时,会保留对应模块中的pom的所有信息,不会做改动。这样就给模块的发布带来了一定的麻烦,如果直接发布这样的pom.xml,是可能给使用者造成干扰的,出了问题又很难进行定位

作用:生成一个压缩版的pom.xml文件

和构建有关的元素会被删除;
和开发有关的元素默认会被删除;
只包含构件的使用者必须的一些信息;
变量会被解析;
上级关系会被解析,然后被压缩删除;
构建时实际使用的profile会被评估,视情况处理;
由JDK或者OS驱动的profile会被保留,需要时可以动态地控制依赖。

你可能感兴趣的:(maven,maven)