一、问题
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个阶段:
- validate - 校验项目是否正确,并且必须的信息是否存在;
- compile - 编译项目的资源代码;
- test - 使用合适的单元测试框架,测试编译的资源代码,测试时,不要求代码必须打包或部署;
- package - 将编译后的代码打包成指定格式,例如JAR,WAR等等;
- verify - 运行并检查集成测试的结果,来保证质量;
- install - 将打包好的包放到本地的仓库中,并在本地记录依赖dependency的地址;
- deploy - 将最终的包复制到远程仓库中,让其他人也能下载;
我将会用制作汽车来打比方;
- validate - 汽车零件是否齐全
- compile - 将零件组装
- test - 轮胎组测试轮胎,发动机组测试发动机,车架组测试车架等
- package - 汽车的各个部分分别测试完毕后,开始组装汽车
- verify - 开始整车测试;
- install - 测试完的汽车放入本工厂的仓库,并记录汽车的编号;
- 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