项目管理工具

Maven:自动构建工具,基于JAVA开发,用于对源码进行编译、测试、打包、上传等一系列构建操作,并且可以自动获取在构建过程中所需要的依赖包,解决依赖包之间的依赖关系。

项目构建过程
项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。

使用maven的好处
 Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定,对于项目的合作开发、后期维护等很方便;
使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。可跨平台,应用于大型项目,maven分模块开发,提高开发效率。

仓库类型分为三种
本地仓库:本地仓库位于MAVEN所在主机的指定目录/root/.m2/repository/
中心仓库:官方提供的仓库,也是MAVEN下载依赖包时使用的默认仓库
私有仓库:可以通过第三方工具在公司局域网环境下搭建

maven常用命令

mvn compile:将源码根据pom.xml文件编译为字节码
mvn test:将源码根据pom.xml文件编译为字节码,并测试
mvn package:将源码根据pom.xml文件编译为字节码,测试,并打包
mvn install:将源码根据pom.xml文件编译为字节码,测试,打包,并上传到本地仓库
mvn deploy:将源码根据pom.xml文件编译为字节码,测试,打包,并上传到本地仓库和指定的远程仓库

部署JDK

解压软件包

1
2
tar zxf jdk-8u201-linux-x64.tar.gz
mv /root/jdk1.8.0_201/ /usr/local/java

配置环境变量

1
2
3
4
5
vi /etc/profile
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASS_PATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

加载环境变量

1
source /etc/profile

部署Maven

解压软件包

1
2
tar zxf apache-maven-3.6.0-bin.tar.gz
mv /root/apache-maven-3.6.0 /usr/local/maven

配置环境变量

1
2
3
vi /etc/profile
export MAVEN_HOME=/usr/local/maven
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$MAVEN_HOME/bin:$PATH

加载环境变量

1
source /etc/profile

查看maven版本

1
mvn -v

修改maven主配置文件

取消注释147行

1
2
3
4
5
6
7
8
9
vi /usr/local/maven/conf/settings.xml
<mirrors> //用来指定镜像仓库,可以有多个镜像仓库同时存在
<mirror>
<id>aliyun</id> //用id来区分多个镜像仓库
<mirrorOf>*</mirrorOf> //指定该镜像仓库的源仓库的仓库名称,“*”表示镜像所有仓库
<name>image aliyun</name> //该镜像仓库的名字,解释性强
<url>https://maven.aliyun.com/repository/public</url> //指定阿里云镜像仓库的URL
</mirror>
</mirrors>

构建项目jar包

使用哪个用户构建,就会生成在哪个用户指定的家目录下,不建议使用root用户

1
mvn archetype:generate -DgroupId=edu.kgc.study -DartifactId=study -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeCatalog=internal -DinteractiveMode=false

archetype:generate:指定使用可以加载模块的插件
-DgroupId=edu.kgc.study:指定该项目的ID,由域名edu.kgc和项目名study两部分组成,域名最好为公司的名称
-DartifactId=study:指定项目的名字
-DarchetypeArtifactId=maven-archetype-quickstart:指定要使用的模块为maven-archetype-quickstart
-DarchetypeCatalog=interna:指定以交互模式构建项目
DinteractiveMode=false:不采用交互模式,不需要人为操作

查看代码文件

1
2
cd /root/study/src/main/java/edu/kgc/study/
cat App.java

进入基础目录study

1
2
3
4
5
cd /root/study
mvn compile //编译
mvn test //测试
mvn package //打包
mvn install //上传(可以直接执行上传,执行上传后以上步骤都会执行)

构建项目war包

1
2
cd /root
mvn archetype:generate -DgroupId=aliyun.kgc.webs -DartifactId=webs -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeCatalog=internal -DinteractiveMode=false

构建war包项目的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
vi /root/webs/pom.xml
<modelVersion>4.0.0</modelVersion> //指定maven使用4.0.0版本的pom
<groupId>aliyun.kgc.webs</groupId> //指定项目的ID
<artifactId>webs</artifactId> //项目名
<packaging>war</packaging> //构建完成后打包的类型为war包
<version>1.0-SNAPSHOT</version> //构建完成后打包的版本为1.0,SNAPSHOT表示是测试版
<name>webs Maven Webapp</name> //项目介绍
<url>http://maven.apache.org</url> //指定仓库的URL
<dependencies> //指定依赖插件
<dependency>
<groupId>junit</groupId> //测试用的插件
<artifactId>junit</artifactId>
<version>3.8.1</version> //指定插件的版本
<scope>test</scope> //指定该插件的作用是用来测试编译后的字节码
</dependency>
</dependencies>
<build>
<finalName>webs</finalName> //构建包的名称
</build>
</project>

cd /root/webs
mvn install //上传
cd target/
ls
webs.war

将war包拷贝到tomcat目录下

1
2
3
4
5
6
7
8
9
10
cp target/webs.war /usr/local/tomcat/webapps/
# 启动Tomcat
/usr/local/tomcat/bin/startup.sh
# 访问测试
curl localhost:8080/webs/
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>