项目管理工具
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
|
加载环境变量
部署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
|
加载环境变量
查看maven版本
修改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>
|