项目实战系列.1.JAVA.MAVEN.TOMCAT

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通则生效】

 测试结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值