【Maven】1、maven的构建周期

一、问题

1.1、环境
电脑环境:Windows 7;
开发工具:Eclipse 4.6.3;
数据库环境:Oracle 11g;
JDK环境: Jdk1.8;
Maven环境:Maven3.5.0;

1.2、问题
我们再项目管理,jar包管理的时候,经常会使用到maven工具,那么,如何使用maven工具,有哪些注意点呢?

二、解答

2.1、基本知识;

2.1.1、构建生命周期的3种方式:default, clean and site.
default:负责项目的部署;
clean:负责项目的清除;
site:处理项目网站文档的创建
(PS:我觉得起的这3个名字,根本不能见名知意。。。)

2.1.2、创建生命周期的阶段;
上述3中方式中,完成defalut需要下面7个阶段:

  1. validate - 校验项目是否正确,并且必须的信息是否存在;
  2. compile - 编译项目的资源代码;
  3. test - 使用合适的单元测试框架,测试编译的资源代码,测试时,不要求代码必须打包或部署;
  4. package - 将编译后的代码打包成指定格式,例如JAR,WAR等等;
  5. verify - 运行并检查集成测试的结果,来保证质量;
  6. install - 将打包好的包放到本地的仓库中,并在本地记录依赖dependency的地址;
  7. deploy - 将最终的包复制到远程仓库中,让其他人也能下载;

我将会用制作汽车来打比方;

  1. validate - 汽车零件是否齐全
  2. compile - 将零件组装
  3. test - 轮胎组测试轮胎,发动机组测试发动机,车架组测试车架等
  4. package - 汽车的各个部分分别测试完毕后,开始组装汽车
  5. verify - 开始整车测试;
  6. install - 测试完的汽车放入本工厂的仓库,并记录汽车的编号;
  7. deploy - 将汽车发送给全国经销商;(这里比喻有点有点不一样的是,本地也会保存一份);

2.2、pom.xml
我们先来看一个最简单的pom.xml文件;pom是porject object managerment的缩写,在pom.xml里,你可以定义项目的名称,版本,需要继承的其他项目的jar包,你自己依赖的jar包;本项目需要的一些插件,配置发布地址等等;你可以在这个基础上去增加或修改自己的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>
    <artifactId>dubbo-sdk</artifactId>

    <!--需要继承的父类的依赖(非必须写,也可以不继承)-->
    <parent>
        <artifactId>MyNoteBook</artifactId>
        <groupId>com.springboot</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>



    <!--定义本POM.xml中要使用的变量,属性-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <jdk.version>1.8</jdk.version>
        <downloadSources>false</downloadSources>
    </properties>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.8.4</version>
        </dependency>


        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <!--exclusions会排除指定的jar包-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>jcl-over-slf4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>


        <!--这里加了一个使用范围,只有在测试时才会编译使用-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>


    </dependencies>

    <!--导入插件-->
    <build>
        <plugins>

            <!--maven的打包插件-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>log4j2.xml</exclude>
                        <exclude>application.properties</exclude>
                    </excludes>
                </configuration>
            </plugin>

            <!--mybatis的逆向生成工具-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.3</version>
                <configuration>
                    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                </configuration>
            </plugin>

            <!--maven的编译插件-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${jdk.version}</source>
                    <target>${jdk.version}</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                    <forkMode>once</forkMode>
                    <argLine>-Dfile.encoding=UTF-8</argLine>
                </configuration>
            </plugin>

            <!--maven的复制插件,将需要用的jar包复制到指定目录下-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!--指定测试资源-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>additional-resources</id>
                        <phase>process-test-resources</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
                            <resources>
                                <resources>
                                    <resource>
                                        <directory>${project.basedir}/src/test/resources</directory>
                                    </resource>
                                </resources>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>nexus-osc</id>
            <name>MyNoteBook Repository</name>
            <url>127.0.0.1</url>
            <layout>defalut</layout>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
</project>

三、总结

欢迎关注我的
CSDN博客: https://blog.csdn.net/River_Continent
微信公众号:幕桥社区
在这里插入图片描述
* 知乎:张牧野, https://www.zhihu.com/people/zhang-mu-ye-37-76/activities
* 简书: https://www.jianshu.com/u/02c0096cbfd3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章