尚硅谷Maven基础 笔记

Maven笔记

【1】Maven配置

<?xml version="1.0" encoding="UTF-8"?>


<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
  
  <!-- 本地仓库配置。默认在windows中,本地仓库位置是: 
       C:\users\jincg\.m2\repository\
	   C:\用户\当前登录用户\.m2\repository\
  -->
  <localRepository>D:\\repos</localRepository>

  
  <pluginGroups>
    
  </pluginGroups>

  
  <proxies>
    
  </proxies>

  
  <servers>
    
  </servers>

  
  <mirrors>
    <mirror>
        <id>alimaven</id> <!-- 唯一标记,随便编写,必须唯一 -->
        <name>aliyun maven</name> <!-- 自定义名称,必须唯一 -->
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <!-- 地址,不可修改-->
		<!-- 镜像仓库作用范围,建议 : *
		     * - 全部范围
			 central - 中央
			 plugin - 插件
			 snapshot - 快照, 测试版本, 开发版本
		-->
        <mirrorOf>*</mirrorOf> 
    </mirror>
  </mirrors>

  
  <!-- 全局需要的一些资源,如:JDK版本。 Maven项目使用的默认JDK版本 -->
  <profiles>
    <!-- 一个profile,代表一个资源的配置。配置的资源不会即时生效 -->
    <profile>
		 <!-- 唯一标记,随便写,唯一即可 -->
         <id>jdk-11</id>
		 <!-- 默认生效范围 -->
         <activation> 
		    <!-- 默认生效 -->
            <activeByDefault>true</activeByDefault>
            <jdk>11</jdk> <!-- 具体版本 -->
         </activation>
         <properties> <!-- 详细参数设置 -->
		    <!-- 源代码版本 - 11 -->
            <maven.compiler.source>11</maven.compiler.source>
			<!-- 编译后,字节码版本 - 11 -->
            <maven.compiler.target>11</maven.compiler.target>
			<!-- 编译器版本, 11 -->
            <maven.compiler.compilerVersion>11</maven.compiler.compilerVersion>
         </properties>
    </profile>
  </profiles>

  <!-- activeProfiles 激活配置的profile,让profile生效
    <activeProfile>alwaysActiveProfile</activeProfile>
    <activeProfile>anotherAlwaysActiveProfile</activeProfile>
  -->
  <activeProfiles>
    <!-- 写一个 activeProfile, 值就是profile的id -->
	<activeProfile>jdk-11</activeProfile>
  </activeProfiles>
</settings>

【2】pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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">

  <!-- 具体的配置内容 -->
  <!-- 模型版本,一定是4.0.0 -->
  <modelVersion>4.0.0</modelVersion>
  <!-- 定义资源坐标。每个maven项目,本身必须有一个唯一的资源坐标。 -->
  <!-- 组坐标。也称为组唯一标记。 一般使用企业域名倒叙定义。 -->
  <groupId>com.bjsxt</groupId>
  <!-- 当前项目的资源名称。一般都和你的project名称相同。project名称是存放在本机中项目文件夹的名称 -->
  <artifactId>my-maven</artifactId>
  <!-- 版本。由字符组成。 必须使用字母或数字开头。可以增加 '-', '.', '_'
       版本中的snapshot代表是快照版本,是不稳定的开发或测试版本。
	   没有snapshot代表不是快照,是稳定可以使用的版本。
  -->
  <version>1.0-SNAPSHOT</version>

</project>

【3】资源拷贝

<?xml version="1.0" encoding="UTF-8"?>
<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>` 自动生成,指定pom默认版本。对于Maven 2.x、Maven 3.x中modelVersion必须是4.0.0 -->
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.bjsxt</groupId>
    <artifactId>idea_mvn</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- 当前maven项目的类型。可选值有: pom, jar, war。默认是jar -->
    <!--<packaging>jar</packaging>-->

    <!-- 当前项目需要的所有依赖资源 -->
    <dependencies>
        <!-- 具体的要依赖的资源坐标 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <!-- 定义一个资源拷贝 -->
            <resource>
                <!-- 指定要拷贝的资源原始目录地址 -->
                <directory>src/main/java</directory>
                <includes>
                    <!-- 配置若干符合规范的要拷贝的表达式。
					   *  0 - N 个字符不包括斜线
					   ** 0 - N 个字符包括斜线
 					-->
                    <include>**/*.txt</include>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <!-- 让include表达式生效并基于表达式过滤 -->
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
</project>

【4】发布项目到Tomcat中

1. 设置项目类型为war。如果没有修改成war,运行时控制台会显示BUILD SUCCESS。而不是正常web项目启动日志。
2. 在pom.xml的<build>中添加Tomcat7插件
3. 点击IDEA右侧Maven面板,选择要运行的项目 -> Plugins -> tomcat7 -> tomcat7:run
  • pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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.bjsxt</groupId>
    <artifactId>mavenweb1</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- 必须设置项目类型为war -->
    <packaging>war</packaging>

    <build>
        <plugins>
            <!-- Tomcat插件 -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <path>/bjsxt</path><!--发布到Tomcat的名称,即URL访问名称,平时多使用/-->
                    <port>8081</port><!-- 端口,平时多使用80或8080 -->
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

【5】POM模型-依赖关系

[1] 实现核心
父工程配置完成后通过Maven面板中的install将工程打包后安装到本地。注意:install后如果对工程进行了修改,需要重新install。
[2] 依赖中央仓库中的资源:
  只要在pom文件中,依赖对应资源的坐标即可。
  先找本地仓库中的资源,如果没有,链接中央仓库,下载到本地仓库,再导入到当前工程中。
[3] 依赖自定义的工程:
  在pom文件中,增加自定义工程的坐标即可。
  先找本地仓库中的资源,如果没有,链接中央仓库,下载到本地仓库,再导入到当前工程中。
  自定义的工程,必须先安装到本地仓库,或申请统一个中央仓库资源坐标上传到中央仓库后,才可以依赖。
  使用maven的生命周期管理中的install即可。
[4] 依赖的交叉|传递|冲突等问题:
  依赖的传递: 工程A,依赖工程B,那么B工程依赖的所有资源,A工程自动依赖
  依赖的冲突: 工程A,依赖工程B和C,B依赖了mysql驱动8.0.29,C依赖了
    mysql驱动8.0.28。A中依赖的mysql驱动,根据pom文件中的配置顺序,
    由上至下,优先依赖。不是依赖最高版本。
  依赖的路径: 工程A,依赖工程B和C,C依赖工程D。B依赖mysql8.0.29,D依赖
    mysql8.0.28,那么A中的mysql一定是8.0.29。因为maven中的多个冲突依赖
    使用最短路径优先。
  依赖的交叉: 工程A,依赖工程B和C,B和C都依赖对方。A中的依赖是B和C。
  • 父工程
<?xml version="1.0" encoding="UTF-8"?>
<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.bjsxt</groupId>
    <artifactId>projecta</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>com.bjsxt</groupId>
            <artifactId>projectb</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>
  • 子工程
<?xml version="1.0" encoding="UTF-8"?>
<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.bjsxt</groupId>
    <artifactId>projectb</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>com.bjsxt</groupId>
            <artifactId>projectc</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

【6】POM模型-继承关系

[1] 实现核心:
	1. 父工程配置完成后通过Maven面板中install把工程安装到本地仓库
	2. 在子工程中使用`<parent>`标签表示指定当前工程的父工程。里面配置父工程的坐标
	3. 子工程只继承了父工程的pom.xml。并不会继承src/main下的内容
	4. 如果想要使用另一个工程的类,这种关系在Maven中叫做依赖
[2] 继承的是父工程的pom。继承父工程的依赖。
[3] 要求父工程的工程类型必须是pom。配置完成后通过Maven面板中install把工程安装到本地仓库。
[4] pom类型的工程,实际上是没有java代码的。
[5] maven工程中,依赖分为管理和依赖。
管理:类似Java中的import,只是导入了,但是未必使用。
     用于在父工程中,定义子工程需要依赖的各种资源的版本和名称和组。
     子工程是不会自动依赖的。
     在子工程中依赖父工程定义的管理内容,可以省略版本。
     默认使用父工程中管理的资源版本。
     如果子工程也定义了依赖的资源版本,最短路径优先。
依赖:类似Java中定义一个变量,即导入了,也使用了
  • 父工程
<?xml version="1.0" encoding="UTF-8"?>
<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.bjsxt</groupId>
    <artifactId>projectparent</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- 自定义属性时,需要通过properties标签 -->
    <properties>
        <!-- 标签名自定义。一般都以xxx-version进行命名 -->
        <mysql-version>8.0.27</mysql-version>
    </properties>

    <!-- 在<dependencies>标签外面多了一层<dependencyManagement>-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <!-- 通过${属性名}可以获取到<properties>中标签的值 -->
                <version>${mysql-version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
<!-- 下面是控制子工程插件版本时的写法-->
<!--    <build>-->
<!--        <pluginManagement>-->
<!--            <plugins>-->

<!--            </plugins>-->
<!--        </pluginManagement>-->
<!--    </build>-->
</project>
  • 子工程
<?xml version="1.0" encoding="UTF-8"?>
<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>
    <!-- 指定当前工程的父工程为projectparent -->
    <parent>
        <groupId>com.bjsxt</groupId>
        <artifactId>projectparent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <groupId>com.bjsxt</groupId>
    <artifactId>projectchild</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- 没有配置version标签 -->
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>
</project>

【7】POM模型-聚合关系

[1] 实现核心
1. 父工程,一定是pom类型的
2. 聚合项目中父工程专属配置,表示当前项目的子项目

[2]聚合子工程
默认继承父工程的groupId和version。
聚合子工程,和普通子工程的特性完全相同,也就是继承父工程的依赖,可使用父工程的依赖管理资源版本。
聚合子工程,是父工程的一个组成部分,称为module。模型。会在父工程的pom.xml配置文件中体现。使用<module>标签描述。
聚合关系可以是多个层次。如:父工程A,有聚合子工程B,B有聚合子工程C。那么A和B都是pom类型的工程,C可以是jar或war类型的。
聚合工程关系树中,只在叶子节点的工程中编写代码。非叶子节点的工程,都是pom类型的,都不编写代码。
[3] 继承 和 聚会 区别
聚合关系中的父子继承,还有依赖,都和普通的继承依赖特性相同。
普通的继承: 父工程的依赖,子工程自动依赖。 父工程的依赖管理,子工程可以使用。
聚合关系的继承下: 父工程的依赖,子工程自动依赖。 父工程的依赖管理,子工程可以使用。
普通的依赖: 最短路径传递依赖。
聚合关系的依赖: 最短路径传递依赖。 最好不要依赖聚合关系中的直接父工程。很少依赖间接的聚合父工程。

聚合关系中,可以不安装,直接实现继承和依赖。原因是,聚合父子工程,都在当前开发窗口中。属于同一个局部。
这种情况下,优先找聚合范围内的资源,没有再找本地仓库,没有访问中央仓库,再没有,抛出异常。

注意:如何真的需要安装,那么必须先安装顶级父工程,再安装,子工程。依次递归。
因为安装聚合工程,必须从根到叶子,依次安装。所以,maven的安装逻辑,会自动安装当前的工程和包含的聚合子孙工程。
安装聚合顶级父工程的直接子工程,且这个子工程没有依赖,没有代码,可以安装成功,因为无资源,无代码,无编译,无运行。
但是,依赖这个安装的工程时,很可能发生错误。
如果,需要使用,聚合父工程中定义的依赖管理时,可能无法找到父工程的pom信息。
  • 父工程
<?xml version="1.0" encoding="UTF-8"?>
<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.bjsxt</groupId>
    <artifactId>all_pro</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>sub1_pro</module>
        <module>sub2_pro</module>
    </modules>

    <properties>
        <junit-version>4.13.2</junit-version>
        <mysql-version>8.0.29</mysql-version>
    </properties>
    <!-- 管理 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql-version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit-version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>
  • 子工程
<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>all_pro</artifactId>
        <groupId>com.bjsxt</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>sub1_pro</artifactId>

    <!-- dependencies是依赖,代表把坐标对应的唯一资源,导入到当前的项目环境中。作为一个jar包使用。
        那么这个依赖的资源,必须有jar包。
        pom项目和war项目,不可以被依赖。
    -->
    <dependencies>
        <!--<dependency>
            <artifactId>all_pro</artifactId>
            <groupId>com.bjsxt</groupId>
            <version>1.0-SNAPSHOT</version>
        </dependency>-->
    </dependencies>

</project>
  • 其他工程引用父工程依赖管理
<?xml version="1.0" encoding="UTF-8"?>
<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.bjsxt</groupId>
    <artifactId>pro_1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencyManagement>
        <dependencies>
            <!-- 特殊的依赖
                 如果要依赖的工程类型是pom。
                 那么目的不是要依赖pom工程的代码,因为pom没有代码。
                 目的是需要pom工程中定义的依赖管理,依赖版本,和定义的插件等信息。
                 那么可以在当前工程的依赖关系中,导入这个pom工程的依赖关系。
                 定义这个工程是一个pom类型的 <type>pom</type>
                 maven就会只把这个pom工程的依赖管理信息加载到当前工程中,直接使用。
                 任何工程中的properties,都只在当前工程及子工程中可以使用。其他工程不可使用。
             -->
            <dependency>
                <groupId>com.bjsxt</groupId>
                <artifactId>all_pro</artifactId>
                <version>1.0-SNAPSHOT</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!--<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>-->
        <dependency>
            <groupId>com.bjsxt</groupId>
            <artifactId>pro_2</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.bjsxt</groupId>
            <artifactId>pro_3</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <artifactId>sub1_pro</artifactId>
            <groupId>com.bjsxt</groupId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!-- all_pro 中已定义好版本 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>
</project>

【8】部署Maven项目到服务器

1. 保证项目的`<packaging>`为war类型
2. 配置tomcat的tomcat-users.xml
3. 配置工程的pom.xml
4. 点击Maven面板的package进行打包
5. 点击Maven面板的Plugins选择tomcat:deploy即可进行远程部署,如果服务器中已经存在这个项目,再次运行会报错。再次部署点击 tomcat7:redeploy进行第一次或第N次部署
  • tomcat-users.xml
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
<!--
  NOTE:  By default, no user is included in the "manager-gui" role required
  to operate the "/manager/html" web application.  If you wish to use this app,
  you must define such a user - the username and password are arbitrary. It is
  strongly recommended that you do NOT use one of the users in the commented out
  section below since they are intended for use with the examples web
  application.
-->
<!--
  NOTE:  The sample user and role entries below are intended for use with the
  examples web application. They are wrapped in a comment and thus are ignored
  when reading this file. If you wish to configure these users for use with the
  examples web application, do not forget to remove the <!.. ..> that surrounds
  them. You will also need to set the passwords to something appropriate.
-->
<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
  <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
  <user username="role1" password="<must-be-changed>" roles="role1"/>
-->
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>
</tomcat-users>
  • pom.xml
<!--配置插件-->
<build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <!-- 使用热部署的方式,把当前项目上传到远程的tomcat中
             部署使用英文描述是 deploy。从无到有,称为部署 deploy
             从旧到新(更新项目),称为重新部署 redeploy
             都是tomcat插件的功能。
         -->
        <configuration>
          <!-- 域名也可以 /manager/text 是固定的 -->
          <url>http://192.168.8.129:8080/manager/text</url>
          <username>admin</username>
          <password>admin</password>
          <path>/project</path><!-- 发布到Tomcat的名称,也是以后访问的名称 -->
        </configuration>
      </plugin>
    </plugins>
</build>

【9】常见命令

常用指令指令含义
mvn help:system打印系统属性和环境变量
mvn clean删除target目录,清理所有之前所有编译的内容。手动删除target目录和运行此命令是等效的。
mvn validate验证项目是否可用
mvn compile编译项目,生成target目录
mvn test执行测试。执行测试时会自动运行src/test/java 目录下所有**/Test.java、**/Test.java、**/*TestCase.java 文件,采用约定方式执行。
mvn package打包项目
mvn deploy发布项目
mvn verify校验包是否正确
mvn install安装到本地仓库
mvn site生成站点。但是需要添加插件才能使用。
  • 站点插件
<build>
    <plugins>
        <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>2.7</version>
        </plugin>
    </plugins>
</build>

【10】生命周期

[1] Maven有三套相互独立的生命周期(Lifecycle ):
- Clean Lifecycle:做一些清理工作;
- Default Lifecycle:构建的核心部分、编译、测试、打包、部署等;
- Site Lifecycle:生成项目报告、站点、发布站点;

[2] Default Lifecycle包含如下阶段:
    - `validate` - 验证项目是否正确并且所有必要的信息都可用
    - `compile` - 编译项目的源代码
    - `test`- 使用合适的单元测试框架测试编译的源代码。这些测试不应该要求打包或部署代码
    - `package` - 将编译后的代码打包成可分发的格式,例如 JAR。
    - `verify` - 对集成测试的结果进行任何检查,以确保满足质量标准
    - `install` - 将包安装到本地存储库中,作为本地其他项目的依赖项
    - `deploy` - 在构建环境中完成,将最终包复制到远程存储库以与其他开发人员和项目共享

【11】scope(面试题)

取值解释
compile默认值,不配置scope时的取值,表示依赖参与整个项目的编译、打包、测试、发布。也就是说:编译时需要使用、测试时需要使用、最终打包时会包含。属于一种强依赖。
provided只是编译时生效,项目最终被打包时不会包含该依赖。常见servlet的依赖时需要配置。
runtime运行时生效。表示编译时不参与,但是参与项目的测试、打包。该依赖被打包时会被包含。mysql驱动
test只在测试时生效,这个包中的类只能在src/test中使用。常用在junit依赖时需要被配置。
system类似provided,但是需要结合systemPath属性,表示依赖不是来源于本地库,而是来源于其他目录。使用较少,在一些特殊项目中才可能被使用。
import只能在dependencyManagement标签中使用的域,代表这个资源只是导入的资源,不是依赖的资源。只使用这个资源中的依赖管理内容。常用在依赖pom类型项目。如:微服务,云开发等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值