框架一般是封装了一些代码,能够简化企业开发过程的工具。
1、项目中jar包的管理
2、项目中的多层项目(多模块)的管理
管理项目的jar包时,遇到以下问题
- 版本的使用问题
- 相同的jar包,不同的版本导入多次
- 更换不同版本的jar时,需要比较麻烦的操作
- jar来源问题
- 版本依赖关系的管理
- 相同的包占据大量的空间
使用Maven或者相似的框架(gradle)来管理。
Maven,犹太语,意思是知识的积累。
作用:
- 对包的管理,对jar包的管理,以及对项目的打包等。
- 分模块开发项目。
1、下载并解压相应的压缩包,此处为apache-maven-3.3.9-bin.zip
2、将解压后的文件夹放入到一个没有中文和特殊符号的目录下
3、在该文件夹下的conf文件夹中找到settings.xml配置本地路径和阿里云公共仓库。在此处将提供的settings.xml覆盖原本的settings.xml,后面要改动本地仓库路径。
4、将提供的本地仓库repo.zip解压并放到maven文件夹中。(如果不提供本地仓库,会自动下载,但是由于网络原因可能导致失败。)
5、配置本地仓库路径。
配置本地仓库路径。在settings.xml中找到localRepository标签,将其内容修改成本地仓库路径。
注意:如果localRepository标签是在注释中,应该复制出来。
<localRepository>D:\apache-maven-3.3.9\repolocalRepository>
在 标签中 增加 一个 标签,限定maven项目默认的jdk版本.
内容如下:
<profiles>
<profile>
<id>myjdkid>
<activation>
<activeByDefault>trueactiveByDefault>
<jdk>1.8jdk>
activation>
<properties>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
<maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
properties>
profile>
profiles>
<activeProfiles>
<activeProfile>myjdkactiveProfile>
activeProfiles>
存储和管理jar包的空间。
仓库根据位置不同,有如下分类:
本地仓库:当前主机上保存jar包的仓库。
远程仓库:不在本地,而在服务器上,提供网络下载传输的仓库。
中央仓库:指maven工具提供的最顶层的仓库。一般网络原因,导致可能下载失败。
私服:公司内部或个人在服务器上搭建的仓库,可以提供给用户下载。【了解】
公共仓库:由一些大公司提供的私服或者镜像,然后不需要密码即可访问。
当项目中需要使用某个jar包,会先到本地仓库中查找,如果本地仓库有,则直接使用。
如果本地仓库没有,会先去远程仓库中的私服(公共仓库)中下载。如果私服中存在,则先下载到本地仓库,再使用。
如果私服中没有,则去中央仓库下载,如果中央仓库有,则下载到本地仓库并使用,如果中央仓库也没有,则无法下载,提示没有该jar包。
在idea中有两个地方需要配置:
- 需要在默认配置中配置,配置后所有的新建项目自动配置
- 在File-> New Projects Settings -> Settings for New Projects -> Build… -> Build Tools -> Maven
- 配置右边的Maven home Directory为maven的路径。
- 需要在本地项目中配置。在Settings中配置,与上面配置一致。
新建工程,指定工程类型为maven类型,不使用任何骨架(模板)。
工程名称:day51
GroupId:com.qf
ArtifactId:day51(与工程名称相同)
Version:1.0-SNAPSHOT
src/main/java:源代码主目录
src/main/resources:源代码资源文件目录
src/test/java:单元测试目录
pom.xml:maven的核心配置文件
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.qfgroupId>
<artifactId>day51artifactId>
<version>1.0-SNAPSHOTversion>
project>
如果需要做一个简单的数据库操作工程,需要导入依赖jar。
可以在官网查找依赖路径:
https://mvnrepository.com/
在pom.xml中添加一个标签:dependencies,在该标签中间来添加各种依赖。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.qfgroupId>
<artifactId>day51artifactId>
<version>1.0-SNAPSHOTversion>
<dependencies>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.40version>
dependency>
dependencies>
project>
当添加依赖标签后,发现jar包并没有导入到工程中,需要刷新(同步)jar包。有以下两种方式:
- 直接点击右上角M图标,刷新
- 在pom.xml上右键,选择Maven-> Reimport
#####6.4 使用骨架创建web项目
常用的空骨架:
- 创建普通工程使用:maven-archetype-quickstart
- 创建web工程使用:maven-archetype-webapp
通过maven-archetype-webapp创建的web工程,需要手动新建java和resources目录。
注意:注意:注意:
默认创建的web.xml是2.3版本,默认不支持EL表达式,需要手动在jsp页面设置page指令中的isELIngore为false。
建议:将该web.xml替换为3.0以上的版本。
web.xml
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
web-app>
packaging:打包方式。
jar:打成jar包,一般给其他工程进行依赖。
war:一般是web项目使用,表示最终打包成war包,以放入到tomcat中运行。
pom:作为其他工程的父工程,不能单独使用。
<packaging>warpackaging>
jdk配置:
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
properties>
build标签中是指在maven使用过程中用到的一些插件。
之前创建web项目时,都默认导入tomcat包中的servlet-api, 在maven的项目中,需要在pom.xml中导入该依赖,如下:
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>4.0.1version>
<scope>providedscope>
dependency>
点击右上角Edit Configration按钮,在弹出的窗口左上角点击+号,选择tomcat Server中的Local,然后在弹出的窗口右下角的fix按钮上点击,选择带有exploded的一项。
是指当项目中依赖了一个jar包后,该jar包是在何时应用。
在pom.xml中导入jar时,通过scope标签来配置该jar的生命周期。
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>testscope>
dependency>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>4.0.1version>
<scope>providedscope>
dependency>
dependencies>
标识 | 周期 |
---|---|
compile | 缺省值,适用于所有阶段(测试运行,编译,运行,打包) |
provided | 类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet-api.jar;适用于(测试运行,编译)阶段 |
runtime | 只在运行时使用,如 mysql的驱动jar,适用于(运行,测试运行)阶段 |
test | 只在测试时使用,适用于(编译,测试运行)阶段,如 junit.jar |
system | Maven不会在仓库中查找对应依赖,在本地磁盘目录中查找;适用于(编译,测试运行,运行)阶段 |
如果配置了环境变量,可以直接使用mvn命令,来操作maven的命令。
例如:
mvn -v
mvn clean等
View -> Tool Windows -> Maven或者直接点击idea窗口右边的maven按钮,打开maven窗口。
在LifeCycle中可以找到相应的命令。
运行命令的方式是右键后选择Run,或者直接双击该命令。
clean:删除所有编译后的文件,类似于前面直接删除out文件夹。
compile:编译所有文件。
test:运行项目中单元测试。
package:打包
install:将项目打包并上传到本地仓库。
deploy:将项目打包并上传到远程私服。
1、创建maven工程,不选择任何骨架。注意:修改groupId和artifactId。
2、在pom.xml中添加packaging,设置为war
3、打开Project Stuctrue -> 选择Modules,点击上面的+,选择添加Web。
4、通过右边的编辑按钮,来修改两个路径,将路径中包含src\main\webapp。修改完毕后,下面会有警告,点击警告后面的create Artifact按钮。
运行tomcat:
- 点击右上角Edit Configration按钮,在弹出的窗口左上角点击+号,选择tomcat Server中的Local,然后在弹出的窗口右下角的fix按钮上点击,选择带有war exploded的一项。
当两个包同时依赖某个包,如果版本不一致,可能会导致版本冲突,此时,应该在不需要的包中排除该依赖。
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>4.3.18.RELEASEversion>
<exclusions>
<exclusion>
<groupId>org.springframeworkgroupId>
<artifactId>spring-coreartifactId>
exclusion>
exclusions>
dependency>