其他新闻

其他新闻

阿里云建站教程jsp(阿里云服务器ecs建站教程)

时间:2023-11-22 信途科技其他新闻
1.Maven

大纲:

(1)了解什么是Maven及Maven的作用

(2)掌握Maven安装及整合到Eclipse中

(3)掌握如何使用Maven构建Java项目和Web项目

(4)了解Maven的三种仓库(本地仓库、镜像仓库(私服)、中央仓库(公服))

(5)了解Maven如何管理依赖(即管理jar包)

(6)将Maven整合到IntelliJ IDEA中

1.1 Maven介绍1.1.1 Maven是什么?

Maven: 翻译为"专家"、"内行",是Apache下的一个纯Java开发的一个开源项目。

Maven是一个项目管理工具,使用Maven可以来管理企业级的Java项目开发及依赖的管理。

使用Maven开发,可以简化项目配置,统一项目结构。总之,Maven可以让开发者的工作变得更简单。

什么是依赖管理?要明白依赖管理,首先要知道什么是依赖:

一个Java项目中往往会依赖一些第三方的jar包。比如JDBC程序中要依赖数据库驱动包,或者在使用c3p0连接池时,要依赖c3p0的jar包等。 这时我们称这些Java项目依赖第三方jar包。

而所谓的依赖管理,其实就是对项目中所有依赖的jar包进行规范化管理。

1.1.2 为什么要使用Maven?

传统的项目(工程)中管理项目所依赖的jar包完全靠人工进行管理,而人工管理jar包可能会产生诸多问题。

1、不使用Maven,采用传统方式管理jar包的弊端:

(1)在一些大型项目中会使用一些框架,比如SSM或者SSH框架,而框架中所包含的jar包非常多(甚至还依赖其他第三方的jar包),如果这些jar包我们手动去网上寻找,有些jar包不容易找到,比较麻烦。

(2)传统方式会将jar包添加到工程中,比如Java工程中将jar包放在工程根目录或者放在自建的lib目录下;JavaWeb工程会将jar包放在:/WEB-INF/lib目录下,这样会导致项目文件的体积暴增(例如,有些项目代码本身体积可能仅仅几兆,而加入jar包后,工程的体积可能会达到几十兆甚至百兆)。

(3)在传统的Java项目中是将所有的jar包统一拷贝到同一目录中,可能会存在jar包文件名称冲突的问题!

(4)在进行项目整合时,可能会出现jar包版本冲突的问题。

(5)在传统java项目中通过编译(手动编译或者在eclipse保存自动编译)、测试(手动在main函数中测试、junit单元测试)、打包部署(手动打war包/手动发布)、运行(手动启动tomcat运行),最终访问程序。

2、使用Maven来管理jar包的优势:

(1)Maven团队维护了一个非常全的Maven仓库(中央仓库),其中几乎包含了所有的jar包,使用Maven创建的工程可以自动到Maven仓库中下载jar包,方便且不易出错。

另外, 在Maven构建的项目中,如果要使用到一些框架,我们只需要引入框架的核心jar包,框架所依赖的其他第三方jar包,Maven也会一并去下载。

(2)在Maven构建的项目中,不会将项目所依赖的jar包拷贝到每一个项目中,而是将jar包统一放在仓库中管理,在项目中只需要引入jar包的位置(坐标)即可。这样实现了jar包的复用。

(3)Maven采用坐标来管理仓库中的jar包,其中的目录结构为【公司名称+项目/产品名称+版本号】,可以根据坐标定位到具体的jar包。即使使用不同公司中同名的jar包,坐标不同(目录结构不同),文件名也不会冲突。

(4)Maven构建的项目中,通过pom文件对项目中所依赖的jar包及版本进行统一管理,可避免版本冲突。

(5)在Maven项目中,通过一个命令或者一键就可以实现项目的编译(mvn complie)、测试(mvn test)、打包部署(mvn deploy)、运行(mvn install)等。

还有发布到tomcat服务器中运行: mvn tomcat7:run。如果想实现上面的所有过程,只需要记住一个命令:mvn install

总之,使用Maven遵循规范开发有利于提高大型团队的开发效率,降低项目的维护成本,大公司都会优先使用Maven来构建项目。

1.2 Maven安装1.2.1 下载、安装Maven

1、官方下载地址:http://maven.apache.org/download.cgi

2、下载绿色版,解压之后就可以使用,安装的路径中不要有中文和空格!

1.3 Maven相关配置

在开发中更多是通过Eclipse+Maven来构建Maven项目,所以这里我们需要将Maven配置到Eclipse开发中。

在将安装好的Maven工具配置到Eclipse开发中之前,需要做一些配置。

1.3.1 配置本地仓库位置

本地仓库:其实就是本地硬盘上的某一目录,该目录中会包含项目中所需要的所有jar包及插件。当所需jar包在本地仓库没有时,从网络上下载下来的jar包也会存放在本地仓库中。

因此本地仓库其实就是一个jar包的仓库

maven指定的本地仓库的默认位置是在c盘,默认在:C:\Users\{当前用户}\.m2\repository,例如:

可以保持默认,当然也可以修改其位置到别的盘符路径。

修改方法:找到[MAVEN_HOME]/conf/目录中的配置文件settings.xml,修改maven仓库的路径。

配置该目录后,以后通过maven下载的jar包将会保存在配置的目录下。

1.3.2 配置镜像仓库

当maven项目中需要依赖jar包时,只需要在项目的pom文件中添加jar对应的坐标,Maven就会到Maven的本地仓库中引用相应的jar包,如果本地仓库没有,就会到远程仓库去下载jar包。

如果不配置默认连接的是中央仓库,由于中央仓库面对的是全球用户,所以在下载jar包时,效率可能会比较低。在settings文件中配置私服服务器为阿里云服务器。配置如下:

配置阿里云镜像仓库:

<mirror>    <id>nexus-aliyun</id>     <name>Nexus aliyun</name>     <mirrorOf>central</mirrorOf>    <url>http://maven.aliyun.com/nexus/content/groups/public/</url></mirror>

镜像仓库配置总结:

(1)当所需jar包在本地仓库没有时,会从网络上下载。配置镜像仓库其实就是配置去网络中哪个位置下载jar包到本地。

(2)如果在公司,并且公司有搭建镜像服务器,推荐使用公司的镜像服务器下载jar包,速度会更快。

(3)如果在家里,使用的是外网,可以不配置镜像服务器,默认连接中央仓库下载jar包,或者配置阿里云的镜像服务器。(注意,如果配置阿里云镜像服务器,不可使用手机热点网络!!)

1.3.3 配置JDK版本

通过 Maven创建的工程,JDK版本默认是JDK1.5,每次都需要手动改为更高的版本。

这里可以通过修改maven的settings.xml文件, 达到一劳永逸的效果。

打开 %maven根目录%/conf/settings.xml 文件并编辑它:

在 settings.xml 的<profiles> 标签内部添加如下配置:

<profile>    <id>development</id>    <activation>        <jdk>1.8</jdk>        <activeByDefault>true</activeByDefault>    </activation>    <properties>        <maven.compiler.source>1.8</maven.compiler.source>        <maven.compiler.target>1.8</maven.compiler.target>        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>    </properties></profile>1.3.4 将Maven配置到Eclipse中

将Maven工具配置到Eclipse中,就可以通过Eclipse和自己安装的Maven创建Maven项目了。

1、window右键--> Preferences

2、点击Maven选项,在右侧选项中勾选 "Download Artifact Sources"

3、点击add将自己安装的Maven添加进来

4、添加自己安装的Maven

一定要注意: 自己安装的Maven不要放在桌面上(容易丢失,并且路径中往往有空格),maven的安装路径中也不要包含中文和空格!

5、将默认的maven切换为自己配置的maven

6、设置maven的settings文件的位置

7、测试是否配置成功:window---> show view ---> other中搜索 "maven",点击下面的选框中的选项

在弹出的窗口中,查看自己配置的本地仓库和远程仓库镜像:

1.4 Maven项目构建在利用Maven构建项目时分两种,第一种是:使用简单方式创建Maven工程(Create a simple project),即在创建时勾选前面的框。

如果不勾选前面的框,即使用骨架(其实就是模版)创建Maven工程,只需掌握一种即可!

另,在创建简单工程时,还分为创建Java工程和Web工程。下面分别进行演示。

1.4.1 创建简单工程—Java工程

1、空白处右键New ---> Maven Project

2、在弹出的窗口中,勾选前面的框,创建一个简单工程(即不使用骨架),进入下一步。

3、在弹出的窗口中,填写内容(Package选择jar,即创建java工程),点击完成即可。

在上述内容中,必填的内容有四项:

(1)Group Id -- 组的名称,通常填写公司名称(比如 com.tedu)或者组织名称(org.apache..)

(2)Artifact Id -- 项目名称或者模块名称

(3)Version -- 项目的版本,创建的项目默认是0.0.1-SNAPSHOT 快照,也叫非正式版,正式版是RELEASE)

(4)Package -- 项目的类型: jar表示创建的是Java工程,war表示创建的是web工程,pom表示创建的是父工程(当然相对的还有子工程)或者聚合工程,pom目前我们不讨论。

填写完毕后,点击完成即可完成创建简单Java工程

1.4.2 创建简单工程—Web工程

1、空白处右键New ---> Maven Project:

2、在弹出的窗口中,勾选前面的框,创建一个简单工程(即不使用骨架),进入下一步。

3、在弹出的窗口中,填写内容(Package选择war,即创建web工程),点击完成即可。

4、创建完成后pom.xml文件会报错,说找不到web.xml文件,例如:

手动添加(拷贝)即可,例如:

5、创建Servlet程序,测试运行环境。

上面的错误是因为运行环境中缺少Servlet的jar包,将tomcat运行环境添加过来即可!

*** 缺少Servlet运行环境解决方案:

1、在项目上点击鼠标右键,选择 "Properties" ---> "Targeted Runtimes": 

或者,

2、如果当前没有配置tomcat运行环境,在项目中的pom.xml文件中的根标签下添加Servlet的jar包的坐标,引入Servlet,如下:

添加依赖:

<dependencies>    <dependency>        <groupId>javax.servlet</groupId>        <artifactId>servlet-api</artifactId>        <version>2.5</version>        <scope>provided</scope>    </dependency>    <dependency>        <groupId>javax.servlet</groupId>        <artifactId>jsp-api</artifactId>        <version>2.0</version>        <scope>provided</scope>    </dependency></dependencies>

添加后保存pom文件。若还报错,在项目上右键选择 "Maven" ---> "Update Project…" 更新工程即可!

6、实现Servlet程序

7、测试访问:打开浏览器访问地址:http://localhost:8080/MavenSimpleProJavaweb/HelloServlet

1.4.3 Maven的目录结构

使用Maven创建的工程我们称之为Maven工程,maven工程具有一定的目录规范,对目录结构有严格的要求,一个Maven工程要具有如下目录结构:

下面以Maven的Web项目为例,介绍Maven项目中的目录结构:

MavenSimpleWeb(项目名称)

|-- src/main/java(源码目录): 用于存放程序或项目所需要的Java源码文件

|-- src/main/resources(源码目录):用于存放程序或项目中所需要的配置文件

|-- src/test/java(源码目录): 用于存放测试程序所需要的Java源码文件

|-- src/test/resources(源码目录): 用于存放测试程序所需要的配置文件

|-- src/main/webapp: (Web应用的根目录,作用类似于动态Web工程中的WebContent目录)

|-- WEB-INF: 受保护的目录,放在其中的资源文件,浏览器无法直接访问

|-- web.xml: Web应用的核心配置文件|

|-- target/classes(类目录): 源码目录中的资源经过编译后,会输出到类目录。

|-- pom.xml: Maven项目中非常重要的配置文件,将来项目所需要的任何jar包或者插件,都可以通过 pom文件来导入这些jar包 或插件。

1.5 依赖管理1.5.1 依赖(jar包)管理

依赖管理即jar包的管理,那么通过Maven创建的工程是如何管理jar包的?

1、在Maven项目中如何引入jar包?

在Maven创建的项目中,如果需要引用jar包,只需要在项目的pom.xml文件中添加jar包的坐标(GroupID + ArtifactID + Version)即可将jar包引进项目中,之后就可以在项目中使用所引入的jar包了。

例如,现在我们在pom.xml文件中,添加servlet的jar包的坐标如下:

<dependency>    <groupId>javax.servlet</groupId>    <artifactId>servlet-api</artifactId>    <version>2.5</version></dependency>在pom.xml文件中,添加mysql驱动包的坐标如下:<dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>5.1.32</version></dependency>

2、项目中引入的jar包存放在哪里?

那么问题来了,在pom文件中添加的servlet的jar包坐标,添加的仅仅是一个jar包对应的坐标,而这个jar包到底存放在哪里呢?

了解Maven管理jar包的规则之后,我们可以找到jar包的存放位置是在本地仓库(仓库默认是在:C:\Users\{当前用户}\.m2\repository)的: /javax/servlet/servlet-api/2.5/目录下,例如:

总结:

(1) 在Maven中,所有的jar包全都存放在本地仓库的目录中,如果项目中需要使用某一个jar包,直接在项目的pom.xml文件中通过坐标(GroupID + ArtifactID + Version)引入指定位置的jar包即可。

(2) 这样可以将项目中所有使用的jar包集中在一个目录(本地仓库)中统一进行管理,需要时通过坐标直接引入即可,而不是在每个项目中都拷贝一份,减少了项目体积,也节省了磁盘空间。

(3) 将来如果别人需要导入你的项目,只需要将项目(当然包括pom.xml文件)代码整体传给对方,无需将jar包发送给对方,对方在配置Maven的环境后, Maven会自动根据项目中pom.xml文件里配置的坐标,引入(或下载后再引入)对应的jar包。

3、如果引入的jar包在本地仓库中没有呢?

如果是刚配置的Maven环境,本地仓库中还没有太多jar包,此时在pom文件中通过坐标引入jar包,而本地仓库中没有这个jar包,这时会怎么样呢?

若本地仓库没有所需要的jar包,则会到镜像仓库(也叫私服)或者中央仓库(也叫公服)中下载。下面我们就来介绍Maven的这三种仓库。

1.5.2 Maven三种仓库

在上面所提到的本地仓库、镜像仓库、中央仓库是用来Maven用来更好的管理jar包的所采用的一种方式。下面来了解Maven的三种仓库,以及三种仓库之间的潜在联系。

通过maven构建的项目,会通过项目中的pom.xml文件从远程仓库下载,并保存到本地仓库

l 如果配置了镜像仓库(私服):

项目A需要引入SSM的jar包:根据坐标到本地仓库中寻找,没有相对应的jar包,根据坐标到所配置的镜像仓库中下载指定的jar包,保存一份到本地仓库中,再从本地仓库引入项目中进行使用!

如果镜像仓库中也没有相对应的jar包,根据坐标到中央仓库下载指定的jar包,保存一份到镜像仓库中,再下载到本地仓库中,再从本地仓库引入项目中进行使用

l 如果没有配置镜像仓库(私服):

项目A引入SSM的jar包:根据坐标到本地仓库中寻找,没有相对应的jar包,直接到中央仓库中下载指定的jar包,保存一份到本地仓库中,再从本地仓库引入项目中进行使用

l 项目B也需要引入SSM的jar包:根据坐标到本地仓库中寻找,找到了就直接引入到项目中,无需再次下载!

本地仓库:默认的本地仓库位置在:c:/${user.dir}/.m2/repository,其中${user.dir}表示windows下的用户目录。本地仓库的作用是,用于保存(存储)从私服或者从中央仓库下载下来的jar包(或插件)。当项目中需要使用jar包和插件时,优先从本地仓库查找。

如果本地仓库中没有所需的jar包,可以到私服或者到中央仓库中下载后再保存到本地仓库。

镜像仓库:镜像仓库也叫做私服(Nexus),私服一般由公司搭建并维护(也可以自己搭建)。比如阿里云私服服务器(http://maven.aliyun.com/nexus/content/groups/public/)。

如果项目中使用到的jar包或者插件本地仓库没有,则可以到私服中下载,如果私服中有就直接将jar包保存到本地仓库中;而如果私服中也没有所需的jar包,就到公服上下载所需要的jar包,下载之后先在私服上保存一份,最后再保存到本地仓库。

中央仓库:中央仓库也叫做公服,在maven软件中内置了一个仓库地址(http://repo1.maven.org/maven2)它就是中央仓库,服务于整个互联网,由Maven团队自己维护,里面存储了非常全的jar包,它包含了世界上大部分流行的开源项目的jar包。

那么我们在使用Maven构建的Java项目,项目中所使用的jar包会来自哪里呢?

例如,通过Maven先后构建项目A和项目B,在项目中都需要依赖第三方jar包:

1) 如果项目A中需要依赖第三方jar包,只需要在项目下的pom文件中引入jar包在本地仓库中的坐标即可使用。如果本地仓库没有所需要的jar包,则会连接私服(需要提前配置)下载所需jar包到本地仓库供项目使用。

2) 如果私服上也没有所需的jar包,则会连接中央仓库下载所需要的jar包保存到私服,再将jar包从私服下载至本地仓库,供项目使用。

3) 如果没有配置私服,则默认连接中央仓库下载所需要的jar包到本地仓库中供项目使用

4) 当项目B也需要依赖第三方jar包时,先到本地仓库中查找所需jar包,如果有则直接引用而无需再次下载,如果仍有部分jar包本地仓库中没有,则同上,即连接私服下载所需jar包到本地仓库。若私服中也没有所需jar包,则连接中央仓库下载jar包到私服,再从私服下载jar包到本地仓库中,供项目使用。

1.5.3 添加依赖:方式一

使用maven插件的索引功能快速添加jar包

这种方式需要本地仓库中已经包含了该jar包,否则搜索不到!!

1、如果本地仓库中有我们需要的jar包,可以在项目中的pom.xml文件中空白处右键--> Maven --> Add Dependency在弹出的窗口中添加所需要的依赖(jar包),如图:

2、添加依赖示例:添加spring的jar包的坐标到项目中

(1) 在项目中的pom.xml文件中右键 -> Maven -> Add Dependency,在弹出的窗口中输入 "spring":

选中要添加的jar包(坐标会自动填写),点击OK即可完成添加

(2)如果搜索不到jar包(保证本地仓库中已经下载了该jar包),可以尝试重建索引。

"Maven Repositories" 视图窗口中可以看到如下内容:

在"Local Repositories"上右键选择 "Rebuild Index" 即可重建索引。

完成后,再尝试搜索jar包进行添加。

1.5.4 添加依赖:方式二

1、直接在pom.xml文件中的<dependencies>标签内部添加。例如:在pom.xml文件中添加如下配置,就可以将junit单元测试的jar包引入到项目中来了。

添加依赖:

<dependencies>    <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>4.9</version>        <scope>test</scope>    <dependency><dependencies>

2、手动添加依赖需要指定所依赖jar包的坐标,但是在大部分情况下,我们是不知道jar包的坐标的。可以通过访问如下网址,在互联网上搜索查询:

http://mvnrepository.com

3、示例:添加spring的jar包的坐标到项目中

(1)访问上面其中的一个网址,在搜索框中搜索 "spring"

(2)在搜索出来的内容中,选择所需要的版本并点击版本,查看该版本的spring jar包所对应的坐标:

(3)将坐标直接拷贝到项目的pom.xml文件中即可:

4、将上图中文本框中的坐标拷贝到pom.xml文件中:

1.6 将Maven整合到IntelliJ IDEA中

将Maven整合到IntelliJ IDEA中的过程,与整合到Eclipse中类似。这一块我将在我的下一篇文章中专门介绍。

扫描二维码推送至手机访问。

版权声明:本文由信途科技转载于网络,如有侵权联系站长删除。

转载请注明出处https://www.xintukeji.cn/xintu/18388.html

相关文章

关于ueeshop建站 每年缴费多少的信息

张家口市金桥人力资源开发服务中心为张家口市公安局公开招聘警务辅助人员公告根据工作需要,决定面向社会公开招聘警务辅助人员(辅警),现将有关事项公告如下:一、招聘原则坚持德才兼备以德为先的用人标准,按照公...

深圳网络营销排名,更好的品牌设计公司

达内教育IT培训中心为您整理关于深圳十大网络营销培训机构排名,的相关内容深圳十大网络营销培训机构排名就找达内教育IT培训中心,达内教育IT培。企业认证 所在地 深圳市龙岗区塘坑商业大厦A603 联系电...

济南 网站建设,济南网站建设方案详细

济枣高铁最新信息官网http://m.zk71.com/qiye/9496296.html济枣高铁是国家中长期铁路网规划项目,也是山东“四横六纵”高铁网的重要旅游通道。线路自济南枢纽港沟站引出,经济南...

淘宝关键词修改会影响排名吗(淘宝关键词可以经常修改吗)

淘宝店铺的排名之间关系到店铺的权重和销量淘宝关键词修改会影响排名吗,所以卖家们要密切关注淘宝网的排名规则。那么淘宝关键词修改会影响排名吗,最近淘宝网关于排名又有哪些最新规则呢?我们一起来解读。一、标题...

江小白网络营销经典案例分析,江小白网络营销案例分析ppt

在近几年江小白通过颠覆传统的营销方式,实现了低成本地快速切入市场那传统企业能从江小白的营销案例中学到什么呢在此基础上如何实现营销方式的变。价值链和案例启示等方面对江小白成功地过程进行分析 江小白自白...

广西关键词seo优化排名(肥城市区seo关键词排名)

很多企业网站考虑做优化,但只认准了做指数大的关键词,却忽略掉了长尾词的重要性。其实网站的绝大部分流量都是来自长尾词。尤其是门户类网站,因此优化长尾词也是网站优化的一个重要步骤。那么什么是长尾词,如何挖...

现在,非常期待与您的又一次邂逅

我们努力让每一次邂逅总能超越期待

  • 效果付费
    效果付费

    先出效果再付费

  • 极速交付
    极速交付

    响应速度快,有效节省客户时间

  • 1对1服务
    1对1服务

    专属客服对接咨询

  • 持续更新
    持续更新

    不断升级维护,更好服务用户