• 关于maven


     新建maven项目:

    maven 坐标:
    Group Id:项目的名称,项目名称以域名的倒序,比如:cn.itcast.mavendemo
    Artifact Id:模块名称(子项目名称)
    Version:模块的版本,snapshot(快照版,没有正式发行)、release(正式发行版本)
    
    packaging的方式(打包方式): 
    jar:普通的java工程,运行在控制台上的(默认); 
    war:web工程; 
    pom:聚合工程 
    maven 的生命周期:
    点击项目右键 -> Run As -> Maven..... 注意:
    2 Maven build     (无三点) :显示历史记录
    3 Maven build...  (有三点) : 在Goals那里输入命令
    
    
    compile 命令:重新编译Java文件,于是target文件夹下面就重新过一份.class文件了(编译源代码)(控制台后面有会说的,生成class文件)
    clean:与compile刚刚相反,清掉target下面的.class文件,以及也会把jar包或者war包清掉
    package:  打成一个jar或者war包(当然,如果没有.class文件,会自动编译,也就是执行complile)(可以看到target目录下有jar包或者war包或者什么包生成)
    install:把生成的jarwar包放在maven项目的坐标目录(那个什么什么目录  groudid  artifacateid)下面(控制台后面有会说的,生成jarwar包文件)

     通过在maven上面配置Tomcat,用命令(tomcat7:run)来启动 :

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.xiaofeng.www</groupId>
      <artifactId>mavenWeb</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>war</packaging>
      <build>
          <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-compiler-plugin</artifactId>
                  <version>3.8.0</version>    <!-- maven的编译插件 -->
              <configuration>  
                  <source>1.7</source>  <!-- 指定jdk版本 -->
                  <target>1.7</target>  
              </configuration> 
              </plugin>
              <plugin>
                  <groupId>org.apache.tomcat.maven</groupId>
                  <artifactId>tomcat7-maven-plugin</artifactId>   <!-- 在Maven上面配置tomcat,不用再部署 -->
                  <version>2.2</version>
                  <configuration>
                      <port>8080</port>   <!-- 路径: -http://localhost:8080/mavenWeb/ -->
                      <path>/mavenWeb</path>
                  </configuration>
              </plugin>
          </plugins>
      </build>
      
      <dependencies>
        <!-- servlet一定要配置,scope标签一定要 -->
          <dependency>
               <groupId>javax.servlet</groupId> 
               <artifactId>servlet-api</artifactId>
               <version>2.5</version>  
               <scope>provided</scope>         
           </dependency>
      </dependencies>
      
    </project>

     聚合与继承:

    先建父类,记得是建一个maven project,

    再建子类:

    可以留意到目录结构:

    这就是聚合:把AB两个子项目聚合在一起

    这就是继承:AB两个项目都可以用parent的jar包了

     注意:聚合以及继承常常一起用,但是并没有完全等同。比如:A工程也可以不继承parent的jar包,但是也可以聚合在parent下面

     依赖范围和依赖传递:

    1、compile 编译、测试、运行,A在编译时依赖B,并且在测试和运行时也依赖。
        strus-core、spring-beans
        打到war包或jar包。
    2、provided 编译、和测试有效,A在编译和测试时需要B。
        比如:servlet-api就是编译和测试有用,在运行时不用(tomcat容器已提供)。
        不会打到war。
    3、runtime:测试、运行有效。
        比如:jdbc驱动包 ,在开发代码中针对java的jdbc接口开发,编译不用。
        在运行和测试时需要通过jdbc驱动包(mysql驱动)连接数据库,需要的!!
        会打到war。
    4、test:只是测试有效,只在单元测试类中用。
        比如:junit
        不会打到war。

     设置依赖范围:(如果是compile就不需要设置了,因为compilescope的默认值。重新执行打包为war , 会发现servlet-api.jar已经不存在。

    <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.6</version>
          <scope>runtime</scope>
     </dependency>
    <dependency>
            <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
          <version>2.5</version>
          <scope>provided</scope>
     </dependency>

    什么是依赖传递,大概知道这个概念就可以了,下面这个图我也看不懂

    标签:

    properties:统一管理版本号

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <erui.version>1.2.0-SNAPSHOT</erui.version>
        <mysql.version>5.1.34</mysql.version>
    </properties>

     exclusions:排除依赖

    <dependency>                                    
        <groupId>com.sf</groupId>                   
        <artifactId>erui-common</artifactId>        
        <version>${erui.version}</version>          
        <exclusions>                                
            <exclusion>                             
                <artifactId>sflog-log4j</artifactId>
                <groupId>com.sf.sgs</groupId>       
            </exclusion>                            
        </exclusions>                               
    </dependency>                                   

    dependencyManagement:相当于一个对所依赖jar包进行版本管理的管理器

    1:如果dependencies里的dependency自己没有声明version元素,那么maven就会倒dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明,如果有,就继承它,如果没有就会报错,告诉你必须为dependency声明一个version
    2:如果dependencies中的dependency声明了version,那么无论dependencyManagement中有无对该jar的version声明,都以dependency里的version为准。
    
    <dependencyManagement>  
          <dependencies>  
                <dependency>  
                    <groupId>org.springframework</groupId>  
                    <artifactId>spring-core</artifactId>  
                    <version>3.2.7</version>  
                </dependency>  
        </dependencies>  
    </dependencyManagement>  
      
    //会实际下载jar包  
    <dependencies>  
           <dependency>  
                    <groupId>org.springframework</groupId>  
                    <artifactId>spring-core</artifactId>  
           </dependency>  
    </dependencies>

    END

  • 相关阅读:
    主流负载均衡器LVS、Nginx、HAProxy介绍
    shell脚本加密软件shc
    Linux系统安全配置相关
    Linux系统split对tar文件进行分片和压缩
    kubernetes组件详解和创建POD流程
    构建RPM之SPEC详解
    Python推荐系统框架:RecQ
    Python常用库-Psutil
    使用NLP从文章中自动提取关键字
    模糊字符串匹配:FuzzyWuzzy
  • 原文地址:https://www.cnblogs.com/ericguoxiaofeng/p/7523371.html
Copyright © 2020-2023  润新知