Java环境的配置与Maven的使用
- java语言:简单易用:相对于C++来说,摒弃了C++中容易出错的地方。
- 跨平台运行:Java程序运行在虚拟机中,一次编写,到处运行。
- 丰富的框架和第三方软件
- JDK:java开发包,主要的JDK有openjdk(开源免费),oraclejdk(收费,但jdk8低版本及以前的版本不收费)
java环境的配置
环境准备[以Qracle的jdk8为主]
[root@localhost ~]# uname -r
3.10.0-1160.71.1.el7.x86_64
上传并解压java包
##上传压缩包
[root@localhost ~]# ll
total 186452
-rw-------. 1 root root 1454 Feb 7 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 190921804 Apr 28 13:30 jdk-8u172-linux-x64.tar.gz
##解压,(压缩czvf)
[root@localhost ~]# tar -xzvf jdk-8u172-linux-x64.tar.gz
##不建议安装在root用户家目录,因为软件所有用户都需要使用;需要移动到第三方软件的目录/usr/local
[root@localhost ~]# mv jdk1.8.0_172/ /usr/local/
[root@localhost ~]# ll /usr/local
total 0
drwxr-xr-x. 2 root root 6 Apr 11 2018 bin
drwxr-xr-x. 2 root root 6 Apr 11 2018 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 games
drwxr-xr-x. 2 root root 6 Apr 11 2018 include
drwxr-xr-x 8 10 143 255 Mar 29 2018 jdk1.8.0_172
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 libexec
drwxr-xr-x. 2 root root 6 Apr 11 2018 sbin
drwxr-xr-x. 5 root root 49 Feb 7 20:37 share
drwxr-xr-x. 2 root root 6 Apr 11 2018 src
##如果是普通用户权限拒绝,建议使用sodu提权
普通用户之
将其加入到wheel组【wheel:超级用户权限组】,使其可以使用sodu命令
以root身份执行,将用户tiler加入wheel组
改名
##改名
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ll
total 0
drwxr-xr-x. 2 root root 6 Apr 11 2018 bin
drwxr-xr-x. 2 root root 6 Apr 11 2018 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 games
drwxr-xr-x. 2 root root 6 Apr 11 2018 include
drwxr-xr-x 8 10 143 255 Mar 29 2018 jdk1.8.0_172
...
[root@localhost local]# mv jdk1.8.0_172/ java
[root@localhost local]# ll
total 0
drwxr-xr-x. 2 root root 6 Apr 11 2018 bin
drwxr-xr-x. 2 root root 6 Apr 11 2018 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 games
drwxr-xr-x. 2 root root 6 Apr 11 2018 include
drwxr-xr-x 8 10 143 255 Mar 29 2018 java
...
如果系统自带的openjdk包
将其替换为oracle的jdk8
卸载已有的openjdk
##将所有包含openjdk的包都卸载
##使用jdk -version查看是否卸载干净
配置环境变量
[root@localhost local]# sudo vi /etc/profile
[root@localhost local]# tail -5f /etc/profile
unset i
unset -f pathmunge
export JAVA_HOME=/usr/local/java ##在末行添加环境变量
export PATH=$PATH:$JAVA_HOME/bin
[root@localhost local]# source /etc/profile
[root@localhost local]# echo $JAVA_HOME
/usr/local/java
##查看在环境变量后面追加的值
[root@localhost local]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin
##查看环境变量是否生效
[root@localhost local]# java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
##注意:未显示openjdk则为oraclejdk
Maven管理工具
maven的介绍
- maven就是一个java项目的管理工具,也可以管理其他语言的项目。
maven工作原理
- maven通过项目的pom.xml文件获取项目所需要的软件包。
- 在本地仓库中查看所需要的第三方软件包。
- 如果没有则从远程仓库下载。
- 下载完毕后存入本地仓库。
maven的配置
上传,解压,配置环境变量
##上传压缩包
[root@localhost ~]# ll
total 195304
-rw-------. 1 root root 1454 Feb 7 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 9063587 Apr 28 14:40 apache-maven-3.6.0-bin.tar.gz
[root@localhost ~]# tar -zxvf apache-maven-3.6.0-bin.tar.gz
[root@localhost ~]# ll
total 195304
-rw-------. 1 root root 1454 Feb 7 20:40 anaconda-ks.cfg
drwxr-xr-x 6 root root 99 Apr 28 14:42 apache-maven-3.6.0
-rw-r--r-- 1 root root 9063587 Apr 28 14:40 apache-maven-3.6.0-bin.tar.gz
-rw-r--r-- 1 root root 190921804 Apr 28 13:30 jdk-8u172-linux-x64.tar.gz
[root@localhost ~]# mv apache-maven-3.6.0/ /usr/local/maven
[root@localhost ~]# ll /usr/local/maven/
total 28
drwxr-xr-x 2 root root 97 Apr 28 14:42 bin
drwxr-xr-x 2 root root 42 Apr 28 14:42 boot
drwxr-xr-x 3 501 games 63 Oct 25 2018 conf
drwxr-xr-x 4 501 games 4096 Apr 28 14:42 lib
-rw-r--r-- 1 501 games 13439 Oct 25 2018 LICENSE
-rw-r--r-- 1 501 games 182 Oct 25 2018 NOTICE
-rw-r--r-- 1 501 games 2530 Oct 25 2018 README.txt
[root@localhost ~]# vi /etc/profile
[root@localhost ~]# tail -4f /etc/profile
export JAVA_HOME=/usr/local/java
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
[root@localhost ~]# source /etc/profile
[root@localhost ~]# mvn -v
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_172, vendor: Oracle Corporation, runtime: /usr/local/java/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.71.1.el7.x86_64", arch: "amd64", family: "unix"
maven配置文件的配置
创本地仓库目录
[root@localhost ~]# mkdir /var/local/repo ##数据一般在var目录下
[root@localhost ~]# ls /var/local
repo
修改maven配置文件
[root@localhost ~]# vim /usr/local/maven/conf/settings.xml
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
##添加如下本地仓库
<localRepository>/var/local/repo</localRepository>
##注释内容:
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
##在此添加远程仓库
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
##注释内容:
</mirrors>
配置远程仓库
添加一个maven项目
[root@localhost ~]# ll
total 195304
-rw-------. 1 root root 1454 Feb 7 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 9063587 Apr 28 14:40 apache-maven-3.6.0-bin.tar.gz
-rw-r--r-- 1 root root 190921804 Apr 28 13:30 jdk-8u172-linux-x64.tar.gz
drwxr-xr-x 4 root root 46 Apr 28 16:03 mvn-app
[root@localhost ~]# cd mvn-app/
[root@localhost mvn-app]# ll
total 4
-rw-r--r-- 1 root root 769 Apr 28 16:03 pom.xml
drwxr-xr-x 4 root root 30 Apr 28 16:03 src
drwxr-xr-x 7 root root 139 Apr 28 16:03 target
##清除已编译打包的所有文件。
[root@localhost mvn-app]# mvn clean
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------------< net.ywkt:mvn-app >--------------------------
[INFO] Building mvn-app 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom (3.9 kB at 4.5 kB/s)
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom (13 kB at 49 kB/s)
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/maven-parent/21/maven-parent-21.pom
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/maven-parent/21/maven-parent-21.pom (26 kB at 97 kB/s)
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/apache/10/apache-10.pom
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/apache/10/apache-10.pom (15 kB at 39 kB/s)
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar (25 kB at 101 kB/s)
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ mvn-app ---
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom (1.5 kB at 5.5 kB/s)
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/maven/2.0.6/maven-2.0.6.pom
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/maven/2.0.6/maven-2.0.6.pom (9.0 kB at 34 kB/s)
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/maven-parent/5/maven-parent-5.pom
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/maven-parent/5/maven-parent-5.pom (15 kB at 57 kB/s)
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/apache/3/apache-3.pom
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/apache/3/apache-3.pom (3.4 kB at 13 kB/s)
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.pom
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.pom (4.1 kB at 15 kB/s)
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/sonatype/spice/spice-parent/16/spice-parent-16.pom
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/sonatype/spice/spice-parent/16/spice-parent-16.pom (8.4 kB at 32 kB/s)
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/sonatype/forge/forge-parent/5/forge-parent-5.pom
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/sonatype/forge/forge-parent/5/forge-parent-5.pom (8.4 kB at 12 kB/s)
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.jar
Downloading from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.jar
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.jar (13 kB at 12 kB/s)
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.jar (226 kB at 148 kB/s)
[INFO] Deleting /root/mvn-app/target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.154 s
[INFO] Finished at: 2025-04-28T16:04:47+08:00
[INFO] ------------------------------------------------------------------------
##若为普通用户,执行报错请为目录添加权限
[root@localhost mvn-app]# ll /var/local
total 0
drwxr-xr-x 3 root root 17 Apr 28 16:04 repo
[root@localhost mvn-app]# sudo chmod 777 /var/local/repo
##将所有的class字节码文件打成包。jar:java字节码包,通常是依赖包,war:web
压缩包,可以在tomcat等服务器上运行。
[root@localhost mvn-app]# mvn package
[root@localhost mvn-app]# ll /var/local/repo
total 0
drwxr-xr-x 3 root root 38 Apr 28 16:14 backport-util-concurrent
drwxr-xr-x 3 root root 25 Apr 28 16:14 classworlds
drwxr-xr-x 3 root root 20 Apr 28 16:14 com
drwxr-xr-x 3 root root 25 Apr 28 16:14 commons-cli
drwxr-xr-x 3 root root 26 Apr 28 16:14 commons-lang
drwxr-xr-x 3 root root 33 Apr 28 16:14 commons-logging
drwxr-xr-x 3 root root 19 Apr 28 16:13 junit
drwxr-xr-x 3 root root 19 Apr 28 16:14 log4j
drwxr-xr-x 6 root root 65 Apr 28 16:14 org
##mvn compile:将java文件编译为class字节码文件。
##mvn test:运行并测试Java代码是否正确,发现代码中的逻辑错误。
maven项目的结构
(1)java项目
- pom.xml:mavn项目的配置文件。
- src/main/java:存放项目的源代码。
- src/test/java:存放项目的测试用例。
[root@localhost mvn-app]# yum -y install tree
[root@localhost mvn-app]# tree
.
├── pom.xml
├── src
│ ├── main
│ │ └── java
│ │ └── net
│ │ └── ywkt
│ │ └── App.java
│ └── test
│ └── java
│ └── net
│ └── ywkt
│ └── AppTest.java
(2)web项目
- /src/main/webapp:web项目的页面、图片和配置文件等。
[root@localhost mvn-app]# cd ../mvn-web
[root@localhost mvn-web]# tree
.
├── pom.xml
└── src
└── main
└── webapp
├── index.jsp
└── WEB-INF
└── web.xml
4 directories, 3 files
maven项目工具的生命周期
- mvn compile:将java文件编译为class字节码文件。
- mvn test:运行并测试Java代码是否正确,发现代码中的逻辑错误。
- mvn package:将所有的class字节码文件打成包。jar包是java字节码包,通常是第三方依赖包;war包是web压缩包,可以在tomcat等服务器上运行。
- mvn clean:清除已编译打包的所有文件。
##查看java文件和java的测试用例
[root@localhost mvn-app]# cat src/main/java/net/ywkt/App.java
package net.ywkt;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}
[root@localhost mvn-app]# cat src/test/java/net/ywkt/AppTest.java
.java:源代码
.class:字节码,在虚拟机中运行的文件
解压
[root@localhost mvn-app]# ll
total 4
-rw-r--r-- 1 root root 769 Apr 28 16:03 pom.xml
drwxr-xr-x 4 root root 30 Apr 28 16:03 src
drwxr-xr-x 7 root root 139 Apr 28 16:14 target
##查看项目依赖包和配置说明
[root@localhost mvn-app]# cat pom.xml
##将.java文件编译为.class字节码文件
[root@localhost mvn-app]# mvn compile
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------------< net.ywkt:mvn-app >--------------------------
[INFO] Building mvn-app 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mvn-app ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /root/mvn-app/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ mvn-app ---
[INFO] Nothing to compile - all classes are up to date
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.597 s
[INFO] Finished at: 2025-04-28T17:36:27+08:00
[INFO] ------------------------------------------------------------------------
[root@localhost mvn-app]# ll
total 4
-rw-r--r-- 1 root root 769 Apr 28 16:03 pom.xml
drwxr-xr-x 4 root root 30 Apr 28 16:03 src
drwxr-xr-x 7 root root 139 Apr 28 16:14 target
##查看.class字节码文件
[root@localhost mvn-app]# tree
.
├── pom.xml
├── src
│ ├── main
│ │ └── java
│ │ └── net
│ │ └── ywkt
│ │ └── App.java
│ └── test
│ └── java
│ └── net
│ └── ywkt
│ └── AppTest.java
└── target
├── classes
│ └── net
│ └── ywkt
│ └── App.class
##运行并测试Java代码是否正确,发现代码中的逻辑错误。
[root@localhost mvn-app]# mvn test
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------------< net.ywkt:mvn-app >--------------------------
[INFO] Building mvn-app 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mvn-app ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /root/mvn-app/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ mvn-app ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ mvn-app ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /root/mvn-app/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ mvn-app ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ mvn-app ---
[INFO] Surefire report directory: /root/mvn-app/target/surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running net.ywkt.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.038 s
[INFO] Finished at: 2025-04-28T17:38:17+08:00
[INFO] ------------------------------------------------------------------------
[root@localhost mvn-app]#
打包
对app打包
##将.class字节码文件打成.jar包
[root@localhost mvn-app]# mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------------< net.ywkt:mvn-app >--------------------------
[INFO] Building mvn-app 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mvn-app ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /root/mvn-app/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ mvn-app ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ mvn-app ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /root/mvn-app/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ mvn-app ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ mvn-app ---
[INFO] Surefire report directory: /root/mvn-app/target/surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running net.ywkt.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ mvn-app ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.121 s
[INFO] Finished at: 2025-04-28T17:45:59+08:00
[INFO] ------------------------------------------------------------------------
##将.class字节码文件打到.jar的包中
[root@localhost mvn-app]# ll
total 4
-rw-r--r-- 1 root root 769 Apr 28 16:03 pom.xml
drwxr-xr-x 4 root root 30 Apr 28 16:03 src
drwxr-xr-x 7 root root 139 Apr 28 17:45 target
[root@localhost mvn-app]# ls target/
classes maven-status surefire-reports
maven-archiver mvn-app-1.0-SNAPSHOT.jar test-classes
##尝试在虚拟机中直接运行.jar包
[root@localhost target]# java -cp mvn-app-1.0-SNAPSHOT.jar net.ywkt.App
Hello World!
##修改源码中的内容,直接执行打包package操作,也可以自动进行编译compile,测试操作test
[root@localhost target]# cd ..
[root@localhost mvn-app]# vi src/main/java/net/ywkt/App.java
[root@localhost mvn-app]# cat src/main/java/net/ywkt/App.java
package net.ywkt;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello aaaaaaaa!" );
}
}
[root@localhost mvn-app]# ll
total 4
-rw-r--r-- 1 root root 769 Apr 28 16:03 pom.xml
drwxr-xr-x 4 root root 30 Apr 28 16:03 src
drwxr-xr-x 7 root root 139 Apr 28 17:45 target
##删除之前的字节码文件
[root@localhost mvn-app]# mvn clean
[INFO] --------------------------< net.ywkt:mvn-app >--------------------------
[INFO] Building mvn-app 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ mvn-app ---
[INFO] Deleting /root/mvn-app/target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.216 s
[INFO] Finished at: 2025-04-28T17:53:34+08:00
[INFO] ------------------------------------------------------------------------
[root@localhost mvn-app]# ll
total 4
-rw-r--r-- 1 root root 769 Apr 28 16:03 pom.xml
drwxr-xr-x 4 root root 30 Apr 28 16:03 src
[root@localhost mvn-app]# mvn package
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /root/mvn-app/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ mvn-app ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /root/mvn-app/target/test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ mvn-app ---
[INFO] Surefire report directory: /root/mvn-app/target/surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running net.ywkt.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ mvn-app ---
[INFO] Building jar: /root/mvn-app/target/mvn-app-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.518 s
[INFO] Finished at: 2025-04-28T17:53:51+08:00
[INFO] ------------------------------------------------------------------------
[root@localhost mvn-app]# ll
total 4
-rw-r--r-- 1 root root 769 Apr 28 16:03 pom.xml
drwxr-xr-x 4 root root 30 Apr 28 16:03 src
drwxr-xr-x 7 root root 139 Apr 28 17:53 target
##查看.jar包
[root@localhost mvn-app]# ll target/
total 4
drwxr-xr-x 3 root root 17 Apr 28 17:53 classes
drwxr-xr-x 2 root root 28 Apr 28 17:53 maven-archiver
drwxr-xr-x 3 root root 35 Apr 28 17:53 maven-status
-rw-r--r-- 1 root root 2108 Apr 28 17:53 mvn-app-1.0-SNAPSHOT.jar
drwxr-xr-x 2 root root 67 Apr 28 17:53 surefire-reports
drwxr-xr-x 3 root root 17 Apr 28 17:53 test-classes
##再次运行
[root@localhost mvn-app]# cd target/
[root@localhost target]# java -cp mvn-app-1.0-SNAPSHOT.jar net.ywkt.App
Hello aaaaaaaa!
对web打包
[root@localhost ~]# cd mvn-web/
[root@localhost mvn-web]# ll
total 4
-rw-r--r-- 1 root root 704 Apr 28 17:26 pom.xml
drwxr-xr-x 3 root root 18 Apr 28 17:26 src
[root@localhost mvn-web]# tree
.
├── pom.xml
└── src
└── main
└── webapp
├── index.jsp
└── WEB-INF
└── web.xml
4 directories, 3 files
##对web进行打包至.war包中
[root@localhost mvn-web]# mvn package
##如果远程仓库安装调用的不是aliyun请查看远程仓库配置
Downloaded from nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar (431 kB at 94 kB/s)
[INFO] Packaging webapp
[INFO] Assembling webapp [mvn-web] in [/root/mvn-web/target/mvn-web]
[INFO] Processing war project
[INFO] Copying webapp resources [/root/mvn-web/src/main/webapp]
[INFO] Webapp assembled in [21 msecs]
[INFO] Building war: /root/mvn-web/target/mvn-web.war
[INFO] WEB-INF/web.xml already added, skipping
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 33.116 s
[INFO] Finished at: 2025-04-28T18:08:41+08:00
[INFO] ------------------------------------------------------------------------
[root@localhost mvn-web]# ls target/
maven-archiver mvn-web mvn-web.war
##war包可以直接放在tomcat中运行
##上传time目录
[root@localhost ~]# cd time/
[root@localhost time]# ll
total 4
-rw-r--r-- 1 root root 1189 Apr 28 18:14 pom.xml
drwxr-xr-x 3 root root 18 Apr 28 18:14 src
[root@localhost time]# mvn package
[INFO] Packaging webapp
[INFO] Assembling webapp [time] in [/root/time/target/time]
[INFO] Processing war project
[INFO] Copying webapp resources [/root/time/src/main/webapp]
[INFO] Webapp assembled in [25 msecs]
[INFO] Building war: /root/time/target/time.war
[INFO] WEB-INF/web.xml already added, skipping
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12.187 s
[INFO] Finished at: 2025-04-28T18:15:38+08:00
[INFO] ------------------------------------------------------------------------
[root@localhost time]# ls target/
classes maven-archiver time time.war
tomcat的安装和使用
安装
##环境依赖
[root@localhost ~]# java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
##上传安装包
[root@localhost ~]# ll
total 204636
-rw-------. 1 root root 1454 Feb 7 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 9552281 Apr 28 18:40 apache-tomcat-8.5.31.tar.gz
##解压
[root@localhost ~]# tar -xzvf apache-tomcat-8.5.31.tar.gz
[root@localhost ~]# ll
total 204636
-rw-------. 1 root root 1454 Feb 7 20:40 anaconda-ks.cfg
drwxr-xr-x 9 root root 160 Apr 28 18:41 apache-tomcat-8.5.31
-rw-r--r-- 1 root root 9552281 Apr 28 18:40 apache-tomcat-8.5.31.tar.gz
##改名
[root@localhost ~]# mv apache-tomcat-8.5.31 /usr/local/tomcat
##查看
[root@localhost ~]# ll /usr/local/
total 0
drwxr-xr-x. 2 root root 6 Apr 11 2018 bin
drwxr-xr-x. 2 root root 6 Apr 11 2018 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 games
drwxr-xr-x. 2 root root 6 Apr 11 2018 include
drwxr-xr-x 8 10 143 255 Mar 29 2018 java
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 libexec
drwxr-xr-x 6 root root 99 Apr 28 14:42 maven
drwxr-xr-x. 2 root root 6 Apr 11 2018 sbin
drwxr-xr-x. 5 root root 49 Feb 7 20:37 share
drwxr-xr-x. 2 root root 6 Apr 11 2018 src
drwxr-xr-x 9 root root 160 Apr 28 18:41 tomcat
##一般使用内置的tomcat,所以不配置环境变量,一般内置
##运行
[root@localhost ~]# ll /usr/local/tomcat/bin/
total 836
-rw-r----- 1 root root 34985 Apr 28 2018 bootstrap.jar
-rw-r----- 1 root root 15900 Apr 28 2018 catalina.bat
-rwxr-x--- 1 root root 23463 Apr 28 2018 catalina.sh
-rw-r----- 1 root root 1664 Apr 28 2018 catalina-tasks.xml
-rw-r----- 1 root root 25145 Apr 28 2018 commons-daemon.jar
-rw-r----- 1 root root 207125 Apr 28 2018 commons-daemon-native.tar.gz
-rw-r----- 1 root root 2040 Apr 28 2018 configtest.bat
-rwxr-x--- 1 root root 1922 Apr 28 2018 configtest.sh
-rwxr-x--- 1 root root 8509 Apr 28 2018 daemon.sh
-rw-r----- 1 root root 2091 Apr 28 2018 digest.bat
-rwxr-x--- 1 root root 1965 Apr 28 2018 digest.sh
-rw-r----- 1 root root 3574 Apr 28 2018 setclasspath.bat
-rwxr-x--- 1 root root 3680 Apr 28 2018 setclasspath.sh
-rw-r----- 1 root root 2020 Apr 28 2018 shutdown.bat ##windows系统的脚本
-rwxr-x--- 1 root root 1902 Apr 28 2018 shutdown.sh
-rw-r----- 1 root root 2022 Apr 28 2018 startup.bat
-rwxr-x--- 1 root root 1904 Apr 28 2018 startup.sh
##由于未配置环境变量,这里使用绝对路径执行脚本
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
##关防火墙或开启端口8080
[root@localhost ~]# firewall-cmd --list-all
FirewallD is not running
##---如需关闭,则
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
测试访问
部署项目(一)
将项目的war包直接拷贝至tomcat目录下的webapps中即可,tomcat会自动解压出其中的文件。
##上传date目录
[root@localhost ~]# ll
total 204636
-rw-------. 1 root root 1454 Feb 7 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 9063587 Apr 28 14:40 apache-maven-3.6.0-bin.tar.gz
-rw-r--r-- 1 root root 9552281 Apr 28 18:40 apache-tomcat-8.5.31.tar.gz
drwxr-xr-x 3 root root 32 Apr 28 18:56 date
[root@localhost date]# mvn package
[root@localhost date]# ls target/
classes date date.war maven-archiver
[root@localhost date]# cp target/date.war /usr/local/tomcat/webapps/
##war包将被自动解压为目录
[root@localhost date]# ll /usr/local/tomcat/webapps/
total 384
drwxr-x--- 5 root root 68 Apr 28 18:58 date
-rw-r--r-- 1 root root 388015 Apr 28 18:58 date.war
drwxr-x--- 14 root root 4096 Apr 28 18:41 docs
drwxr-x--- 6 root root 83 Apr 28 18:41 examples
drwxr-x--- 5 root root 87 Apr 28 18:41 host-manager
drwxr-x--- 5 root root 103 Apr 28 18:41 manager
drwxr-x--- 3 root root 306 Apr 28 18:41 ROOT
测试访问
部署项目(二)
[root@localhost ~]# cd time/
[root@localhost time]# ll
total 4
-rw-r--r-- 1 root root 1189 Apr 28 18:14 pom.xml
drwxr-xr-x 3 root root 18 Apr 28 18:14 src
drwxr-xr-x 5 root root 71 Apr 28 18:15 target
[root@localhost time]# cp target/time.war /usr/local/tomcat/webapps/
[root@localhost time]# ll /usr/local/tomcat/webapps/
total 764
drwxr-x--- 5 root root 68 Apr 28 18:58 date
-rw-r--r-- 1 root root 388015 Apr 28 18:58 date.war
drwxr-x--- 14 root root 4096 Apr 28 18:41 docs
drwxr-x--- 6 root root 83 Apr 28 18:41 examples
drwxr-x--- 5 root root 87 Apr 28 18:41 host-manager
drwxr-x--- 5 root root 103 Apr 28 18:41 manager
drwxr-x--- 3 root root 306 Apr 28 18:41 ROOT
drwxr-x--- 5 root root 68 Apr 28 20:12 time
-rw-r--r-- 1 root root 388021 Apr 28 20:12 time.war
测试访问
Tomcat目录结构
- bin:tomcat的使用命令(startup.sh;shutdown.sh)
- conf:配置文件目录(server.xml)
- lib:运行需要的第三方依赖包
- logs:日志(catalina.out启动和报错日志【总日志;有按天的启动和报错日志】;localhost_access_log.txt访问日志;有按天记录的访问日志)
- temp:临时文件
- work:工作使用的临时数据
- webapps:存放tomcat项目(ROOT为tomcat的默认项目,访问时不用输入项目名称)
[root@localhost tomcat]# ll
total 92
drwxr-x--- 2 root root 4096 Apr 28 18:41 bin
drwx------ 3 root root 254 Apr 28 18:48 conf
drwxr-x--- 2 root root 4096 Apr 28 18:41 lib
-rw-r----- 1 root root 57092 Apr 28 2018 LICENSE
drwxr-x--- 2 root root 197 Apr 28 18:48 logs
-rw-r----- 1 root root 1723 Apr 28 2018 NOTICE
-rw-r----- 1 root root 7138 Apr 28 2018 RELEASE-NOTES
-rw-r----- 1 root root 16246 Apr 28 2018 RUNNING.txt
drwxr-x--- 2 root root 30 Apr 28 18:41 temp
drwxr-x--- 9 root root 137 Apr 28 20:12 webapps
drwxr-x--- 3 root root 22 Apr 28 18:48 work
[root@localhost tomcat]# cd logs/
[root@localhost logs]# ll
total 40
-rw-r----- 1 root root 14575 Apr 28 20:12 catalina.2025-04-28.log
-rw-r----- 1 root root 14575 Apr 28 20:12 catalina.out
-rw-r----- 1 root root 0 Apr 28 18:48 host-manager.2025-04-28.log
-rw-r----- 1 root root 1194 Apr 28 18:54 localhost.2025-04-28.log
-rw-r----- 1 root root 1416 Apr 28 20:14 localhost_access_log.2025-04-28.txt
-rw-r----- 1 root root 0 Apr 28 18:48 manager.2025-04-28.log
[root@localhost logs]# tail -5f localhost_access_log.2025-04-28.txt
192.168.18.170 - - [28/Apr/2025:20:13:55 +0800] "GET /time HTTP/1.1" 302 -
192.168.18.170 - - [28/Apr/2025:20:13:55 +0800] "GET /time/ HTTP/1.1" 200 226
192.168.18.170 - - [28/Apr/2025:20:13:55 +0800] "GET /time/images/time.jpg HTTP/1.1" 200 19846
192.168.18.170 - - [28/Apr/2025:20:14:14 +0800] "GET /time/ HTTP/1.1" 200 226
192.168.18.170 - - [28/Apr/2025:20:14:17 +0800] "GET /time/ HTTP/1.1" 200 226
虚拟主机:通过不同域名访问
例如:www.date.cn访问一个项目,ww,time.cn访间一个项目
##备份配置文件
[root@localhost conf]# pwd
/usr/local/tomcat/conf
[root@localhost conf]# ll
total 224
drwxr-x--- 3 root root 23 Apr 28 18:48 Catalina
-rw------- 1 root root 13824 Apr 28 2018 catalina.policy
-rw------- 1 root root 7576 Apr 28 2018 catalina.properties
-rw------- 1 root root 1338 Apr 28 2018 context.xml
-rw------- 1 root root 1149 Apr 28 2018 jaspic-providers.xml
-rw------- 1 root root 2313 Apr 28 2018 jaspic-providers.xsd
-rw------- 1 root root 3622 Apr 28 2018 logging.properties
-rw------- 1 root root 7511 Apr 28 2018 server.xml
-rw------- 1 root root 2164 Apr 28 2018 tomcat-users.xml
-rw------- 1 root root 2633 Apr 28 2018 tomcat-users.xsd
-rw------- 1 root root 169322 Apr 28 2018 web.xml
[root@localhost conf]# cp server.xml server.xml.bak
修改配置文件,在<Engine>标签中增加两个主机的配置:
[root@localhost conf]# vim server.xml
删除9行注释信息
配置多个域名,多个项目目录
配置项目目录
##创建新的项目目录
[root@localhost tomcat]# mkdir dateapps timeapps
[root@localhost tomcat]# pwd
/usr/local/tomcat
[root@localhost tomcat]# cd
[root@localhost ~]# cp date/target/date.war /usr/local/tomcat/dateapps/
[root@localhost ~]# cp time/target/time.war /usr/local/tomcat/timeapps/
##查看
[root@localhost ~]# ll /usr/local/tomcat/dateapps/
total 380
-rw-r--r-- 1 root root 388015 Apr 28 20:53 date.war
[root@localhost ~]# ll /usr/local/tomcat/timeapps/
total 380
-rw-r--r-- 1 root root 388021 Apr 28 20:54 time.war
##重启使配置文件生效
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
修改电脑本地的dns
C:\Windows\System32\drivers\etc
测试【ping通则生效】
测试结果