zoukankan      html  css  js  c++  java
  • maven

    maven

    • 定义:Maven 是一个项目管理工具,它包含了一个项目对象模 型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管 理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标 (goal)的逻辑

    • 下载地址:https://maven.apache.org/download.cgi

    • 安装:

      1、解压

      2、配置环境变量

      • 在系统变量中新建MAVEN_HOME
        • 配置:解压maven路径,如D:apache-maven-3.6.1
      • 在Path系统变量中加入
        • %MAVEN_HOME%in
      • 更改本地仓库位置
        • 找到apache-maven-3.6.1conf下的settings.xml文件里的localRepository
         <!-- localRepository
          | The path to the local repository maven will use to store artifacts.
          |
          | Default: ${user.home}/.m2/repository
         <localRepository>此处填写本地仓库位置</localRepository>
         -->
      
      * 路径要没有空格没有中文
      

      仓库:本地仓库,远程仓库【私服】,中央仓库

    • maven标准目录结构

      src/main/java —— 存放项目的.java文件
      src/main/resources —— 存放项目资源文件,如spring, hibernate配置文件
      src/test/java——存放所有单元测试java文件,如JUnit测试类
      src/test/resources——测试资源文件
      target——项目输出位置,编译后的class文件会输出到此目录
      pom.xml——maven项目核心配置文件

      src/main/webapp——页面资源,js,css等

    • 命令

      mvn clean		//清除编译信息
      mvn compile		//编译main下文件放在target下
      mvn test		//编译main、test下的文件
      mvn package		//打包,生成target
      mvn install		//打包,生成target,在本地仓库中生成当前项目的jar包
      
    • maven的生命周期

      1. 清除项目编译信息 clean         --清理生理周期
      
      1. 编译 compile
      2. 测试 test
      3. 打包 package                  --默认生命周期
      4. 安装 install
      5. 发布 deploy
      
                                    --站点生命周期
      

    • pom.xml包含信息

      项目自身信息

      项目运行所依赖的jar包信息

      项目运行环境信息 jdk…

    live Templates

    <!-- https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin -->
    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
            <port>8888</port>
        </configuration>
    </plugin>
    		<plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
                <target>1.8</target>
                <source>1.8</source>
                <encoding>UTF-8</encoding>
              </configuration>
            </plugin>
    
    

    解决jar包冲突

    maven 工程导入jar包的坐标,就必须要考虑解决jar包冲突问题
    * 直接依赖:项目中直接导入的jar包,就是该项目的直接依赖包。
    * 传递依赖:项目中没有直接导入的jar包可以通过项目直接依赖jar包传递到项目中。

    1. 第一声明优先原则,哪个jar包的坐标在靠上的位置,这个jar包就是先声明的,先声明的jar包坐标下的依赖包,可以优先进入项目中。

    2. 路径近者优先原则、直接依赖路径比传递依赖路径近,那么最终进入项目的jar包会是路径的直接依赖包。

    3. 直接排除【推荐使用】、当我们要排除某个jar包下的依赖包,在配置exclusions标签的时候,内部可以不写版本号。因为此时依赖包使用的版本和默认版本的jar包一样。

    版本锁定

    maven项目可以分父子依赖关系的。
    凡是依赖别的项目后,拿到别的项目的依赖包,都属于依赖传递。
    防止覆盖所依赖项目的jar包被覆盖可以使用锁住。 即使是同名jar包直接依赖,也无法覆盖
    例:

    <properties>
        <spring.version>5.0.2.RELEASE</spring.version>
    </properties>
    <!--锁定jar包版本-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>${spring.version}</version>
            <dependency>
        <dependencies>
    </dependencyManagement>
    

    maven 工程拆分与聚合



    dao 和parent 是直接依赖,作用域是complie
    dao和junit是传递依赖,作用域是test
    上图中-表示传递丢失,也就是不能用了。

    实际开发中,如果传递依赖丢失,表示形式就是jar包的坐标导不进去。一般就是再导一次。

    未完待续。。。。

  • 相关阅读:
    powerdesigner
    UML类图几种关系的总结(转载 http://blog.csdn.net/tianhai110/article/details/6339565 )
    vuex
    options请求(复杂请求)
    Vue 编程式的导航
    JS定义类
    cors中间件
    vue axios
    restframewor 版本(version)
    pycharm 安装vue
  • 原文地址:https://www.cnblogs.com/PoetryAndYou/p/11407762.html
Copyright © 2011-2022 走看看