一、Maven核心知识
1.1 分模块开发与设计
将ssm模块下的domain包单独成一个模块,坐标可以直接在domain模块的pom.xml中复制,直接导入ssm模块的pom.xml中,通过<dependency>标签:
思想:将一部分功能抽离出来,做成单独的模块。
现在遇到的问题是:仍旧无法编译运行,尽管在IDEA下能找到,但在仓库里找不到。
我们选择新独立出来的模块点击install进行加载即可:
1.2 依赖管理
依赖的传递性:
直接依赖:直接写的叫直接依赖;间接依赖:直接依赖中又用到的叫间接依赖。
依赖冲突:
在依赖中如果同一个坐标写了多次以最后配置的版本为准(后配置覆盖先配置的):
可选依赖:隐藏当前工程所依赖的资源,隐藏后对应资源将不具有依赖传递性,可以避免冲突问题——通过更改<optional>标签进行更改。
排除依赖:在当前引用的坐标中将它的依赖从你的依赖关系中去除掉(用了别人的模块,发现其中有些依赖不想要,排除掉)。
1.3 聚合与继承
聚合:将多个模块组织成一个整体,同时进行项目构建的过程
首先创建Maven模块,设置打包类型为pom,设置当前聚合工程所包含的子模块名称:
如下显示即为成功:
1.4 属性管理
在properties标签下定义一个变量,名字叫作spring.version:
<properties>
<spring.version>5.2.10.RELEASE</spring.version>
</properties>
然后在<version>处填写${}里面写变量名字:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
1. 资源文件引用属性:
2. 配置文件中引用属性:
3. 开启资源文件目录加载属性的过滤器
打war包是如果没有web.xml文件的解决方案:
1. 直接新建一个空的web.xml文件欺骗
2. 通过插件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3<version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
1.5 多环境配置与应用
SNAPSHOT快照版本:项目开发过程中临时输出的版本,称为快照版本,快照版本会随着开发的进展不断更新。
RELEASE发布版本:项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构建文件是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本。
发布版本:alpha版,beta版,纯数字版
多环境开发:<id>里写的是环境的名称代号,<properties>里写的是替换的属性,<activationByDefault>里填写true,表示启用当前环境。
<profiles>
<!--开发环境-->
<profile>
<id>env_dep</id>
<properties>
<jdbc.url>jdbc:mysql:///db1</jdbc.url>
</properties>
<!--设置是否为默认启动环境-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile><!--生产环境-->
<profile>
<id>env_test</id>
<properties>
<jdbc.url>jdbc:mysql:///db1</jdbc.url>
</properties>
</profile>
</profiles>
跳过测试:
需求:不希望测试,直接打包。
场景:有部分功能完成了想上线测试,但有一部分功能还没调通。
点击按键即可:
<skipTests>用于设定是否跳过测试,<exclude>里写要跳过测试的内容:
<build>
<plugins>
<plugin>
<!--先导入插件-->
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<!--先设置不跳过测试-->
<skipTests>false</skipTests>
<!--排除掉不参与测试的内容-->
<excludes>
<exclude>**/BookServiceTest.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
1.6 私服
1.私服的简介与安装
私服:是一台独立的服务器,用于解决团队内部的资源共享与资源同步问题。
按照如下方式打开,注意要将目录放在全英文目录下:
敲cmd指令:
输入如下代码:
nexus.exe /run nexus
出现下面信息是成功:
私服里依靠仓库来存储东西,如果私服仓库里没有就从中央仓库里下载,第2个人访问就不需要再下载:
2. 私服仓库的分类
3. 本地仓库访问私服配置
配置与私服交互的相关信息:
找到如下的代码复制,粘贴到外面进行修改,然后点击齿轮-Repositories-Create repository:
下面是配置访问私服的权限:
<server>
<id>itheima-release</id>
<username>admin</username>
<password>admin</password>
</server>
<server>
<id>itheima-snapshot</id>
<username>admin</username>
<password>admin</password>
</server>
找到下面这行代码:
找到maven-pubic,点击,然后将左边个拖拉过去,表示管理了几个组:
<mirror>
<id>maven-public</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
4. 私服资源上传与下载
记得要先让其它包继承管理包:
<parent>
<groupId>org.itheima</groupId>
<artifactId>maven_01_parents</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../maven_01_parent/pom.xml</relativePath>
</parent>
在parents包(管理包)下的pom.xml中写入如下代码:
<distributionManagement>
<repository>
<id>itheima-release</id>
<url>http://localhost:8081/repository/maven-release/</url>
</repository>
<snapshotRepository>
<id>itheima-snapshot</id>
<url>http://localhost:8081/repository/maven-snapshot/</url>
</snapshotRepository>
</distributionManagement>
deploy是打包上传到私服:
报错:
1. repository element was not specified in the POM inside distributionManagement element or in -DaltDeploymentRepository 是因为没有让其它包继承管理类
2. Failed to deploy artifacts: Could not transfer artifact ***.itheima.domain:domain:jar:1.0-20230908.024442-1 from/to itheima-snapshot (http://localhost:8081/repository/maven-snapshots/): authentication failed for http://localhost:8081/repository/maven-snapshots/***/itheima/domain/domain/1.0-SNAPSHOT/domain-1.0-20230908.024442-1.jar, status: 401 Unauthorized 身份验证失败,在setting.xml中检查设置的登录账号密码,移动到识别目录下
下面是成功:
下面这样就是上传成功了:
如果将version改成RELEASE那么releases文件夹里会有内容,记得继承的也要改。
二、MAVEN配置相关
2.1 Maven的安装配置:
1、解压apache-maven-3.6.1.rar
解压下面的压缩包到当前的文件夹:
2、配置环境变量MAVEN_HOME为安装路径的bin目录
复制文件夹目录,右键此电脑-属性-高级系统设置-环境变量
点击新建:
输入MAVEN_HOME,然后把地址复制过来:
双击PATH
点击新建,然后输入下面文字:
在cmd中输入mvn -version,如果出现下面文字说明环境变量配置成功:
3、配置本地仓库:修改conf/settings.xml中的<localRepository>为一个指定目录
4、配置阿里云私服:修改conf/settings.xml中的<mirrors>标签,为其添加如下标签
<mirror>
<id>alimaven</id>
<name>aliyun maveb</name>
<url>http://maven.aliyun.***/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
2.2 Maven的基本命令
***pile:编译 clean:清理 test:测试
package:打包 install:安装 deploy:上传
原本该文件夹为空:
在文件夹空白处按住shift+点击鼠标右键可以打开PowerShell:
输入mvn ***pile会进行编译,但如果maven库里缺少所需要的包,会预先进行下载:
原本空的文件夹里就下载好了包:
然后project下面也会出现target文件:
输入mvn clean,会删除target文件夹:
输入mvn package,会将java的项目打成一个jar包,会将外部项目打成war包:
输入mvn instal,把项目安装到本地仓库:
2.3 Maven生命周期和IDEA配置
生命周期:
IDEA配置:
2.4 IDEA创建Maven项目+导入坐标及项目
这样子操作创建出来的就是带有src目录的文件:
导入项目:点击Project Structure,点击+然后选择Import Module,然后选择pom.xml文件
Maven坐标:
2.5 依赖管理
如果想让IDEA自动帮忙补全,只需要打出<然后再打其它的内容,点击IDEA自动补全的目标,剩下的就会自动补全。
如果依赖缺失,我们可以直接在网上搜索出相关的Maven依赖:
或者直接点击右侧的Maven,然后点击刷新按钮:
选择下面的选项可以自动进行更新:
点击alt+insert,点击Add dependency,选择想要预装的包,然后点击Add即可:
二、Tomcat
2.1 基本概念
Tomcat是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范。Tomcat也被称为Web容器、Servlet容器。Servlet需要依赖于Tomcat运行。
Web服务器的作用:封装HTTP协议操作,简化开发。可将Web项目部署到服务器中,对外提供网上浏览服务。
JavaEE:全程Java Enterprise Edition,即Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF
2.2 Tomcat的下载安装及启动
先进入到Tomcat的官网
选择Tomcat 8,然后拉到下面选择对应的操作系统即可
在这里直接解压安装包即可:
bin是binary即二进制文件的缩写。放了可执行文件。以.bat结尾是windows系统下可执行的批处理文件,startup.bat点击即可启动。
conf下面存放的是配置文件。lib目录下面放的是.jar包,包里放的是字节码文件。logs放的是日志文件。temp目录是临时目录,存放临时文件与数据。work目录会存放运行过程中产生的临时的文件数据。
webapps里存放的是项目的文件:
若想启动:点击startup.bat输入locolhost:8080即可进入到页面:
若想关闭:在bin目录下找到shutdowm.bat即可关闭。也可以用ctrl+C关闭。
2.3 Tomcat的配置和部署
更改窗口号:
启动窗口一闪而过,是因为Java_Home没有正确配置。
Tomcat项目部署: 一般是将项目打成一个war包然后传输到Tomcat上,可以通过IDEA的插件来将项目打成war包,Tomcat会自动解压缩war文件。
2.4 创建项目
通过web项目骨架创建项目,Archetype选择webapp:
删除掉pom.xml中多余的坐标:
创建的目录缺少java文件,右键main进行创建:
会自动提示所缺少的,直接点击即可创建:
如果缺少webapp目录:
如果想创建web.xml文件,点击“+”号。
2.5 打.war包
先要下载Maven Helper
右键项目-Run Maven-package
如果报出如下的错误:
在pom.xml中导入如下的依赖:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
</plugin>
</plugins>
</build>
然后再运行就成功了,根据这个路径去找war包:
就可以成功找到了:
2.6 部署项目方式1
配置Tomcat:
部署项目:
在webapp下添加一个aaa.html试验一下可以正常打开:
设置的路径就是首页:
2.7项目部署方式2
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
</plugin>
</plugins>
</build>
下面这样子就是访问成功了: