maven

一、maven在什么背景下产生的

  场景一: 

  假如在Eclipse下开发两个Java项目,把它们称为A、B,其中A项目中的一些功能依赖于B项目中的某些类,那么如何维系这种依赖关系的呢?在使用maven前是这样做的,将B项目打包为jar,并在A项目的Library下导入B的jar文件。

  这样做有着很明显的缺点:

        1.如果在开发过程中,发现B中的bug,则必须重新将B打包并对A项目进行重编译操作;

        2.在协同开发A项目时,为了保证其能够正常运行,要么选择将B打包入A中,要么选择将B一样发布出去并告知开发者使用方法(想要用A就必须导入B的jar包)。

  显然这两个方法都不太好,前者可能造成资源浪费(比如开发者可能正在开发依赖B的其它项目,B已经存储到本地了),而后者则会为项目正常运行带来风险(一旦把工作交给人工注定会带来一定的失败率)。

  场景二:

  开发一个项目,或者做一个小demo,比如用SSH框架,那么我们就必须将SSH框架所用的几十个依赖的jar包依次找出来并手动导入,超级繁琐。而且它们包括相同的jar包,版本不统一,新旧版本会有冲突。

  因此,类似场景一和场景二这样手动的控制项目间jar包依赖关系显然是一种‘拙劣’的方法。maven就是去维护和管理这些jar包。使得,只用去写一个配置文件,就可以自动的去使用这些jar包。

二、maven是什么

  maven的核心功能是合理叙述项目间的依赖关系,通俗点讲,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包。

  这些jar包是从仓库中获取到的。

  仓库分为:本地仓库、第三方仓库(私服)、中央仓库。

  1、本地仓库

  maven会将工程中依赖的jar包从远程下载到本机一个目录下管理,每个电脑默认的仓库是在 $user.home/.m2/repository下。例如C:\Users\Administrator\.m2\repository

  一般我们会修改本地仓库位置,自己创建一个文件夹,从网上下载一个拥有相对完整的所有jar包的结合,都丢到本地仓库中,然后每次写项目,直接从本地仓库里拿就行了。修改本地库位置:在$MAVEN_HOME/conf/settings.xml文件中修改,

  <!-- localRepository
  The path to the local repository maven will use to store artifacts.
  Default: ~/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
  <localRepository>D:\java\maven\repository</localRepository>

  其中D:\java\maven\repository:就是我们自己创建的本地仓库,将网上下载的所有jar包,都丢到该目录下,我们就可以直接通过maven的pom.xml文件直接拿。

  2、第三方仓库

  第三方仓库,又称为内部中心仓库,也称为私服。私服一般是由公司自己设立的,只为本公司内部共享使用,可以使用的是局域网。

  它既可以作为公司内部构件协作和存档,也可作为公用类库镜像缓存,减少在外部访问和下载的频率。(使用私服为了减少对中央仓库的访问)。

  一般公司都会创建这种第三方仓库,保证项目开发时,项目所需用的jar包都从该仓库中拿,每个人的版本就都一样。

  注意:连接私服,需要单独配置。如果没有配置私服,默认不使用。

  3、中央仓库

  maven内置了远程公用仓库:http://repo1.maven.org/maven2

  这个公共仓库是由maven自己维护,里面有大量的常用类库,并包含了世界上大部分流行的开源项目构件。目前是以java为主。工程依赖的jar包如果本地仓库没有,默认从中央仓库下载。中央仓库必须使用外网。

  4、获取jar的过程

  优先从本地仓库中查找,本地仓库没有,如果配置私服的话就从私服中获取,私服中没有就从中央仓库中获取并下载到本地仓库以便下次直接使用。没有配置私服就直接从中央仓库中获取并下载到本地仓库以便下次直接使用。

三、Eclipse中如何使用

  1、安装maven

  【检查】确认已经安装jdk,已经环境变量中配置JAVA_HOME,已经修改path。

  【下载】从http://maven.apache.org/download.cgi下载所需要的版本的bin.zip文件,本文以3.0.4版本为例,即apache-maven-3.0.4-bin.zip。

  【解压】解压maven到某一指定目录,例如:D:\env。则D:\env\apache-maven-3.0.4目录下会有bin、conf、lib等文件夹。

  【配置】在环境变量中,新建M2_HOME,设置为D:\env\apache-maven-3.0.4。修改path变量,在原值之后添加%M2_HOME%bin;。path变量的取值通过分号进行分隔。保存后大功告成,在命令行输入mvn -v 查看maven是否配置成功。或者直接修改path,定位到bin。

  2、创建maven项目

  File--->New--->Other--->Maven Project--->选择 Workspace location--->设置项目参数

  Group Id:组(类似于java package),Artifact Id:标识(类似于project name),Version:版本,Packaging:打包方式(jar是java项目,war是web项目,pom是maven项目)

  3、maven项目目录结构

  MavenProjectRoot(项目根目录)
     |----src
     |     |----main
     |     |         |----java ——存放项目的.java文件
     |     |         |----resources ——存放项目资源文件,如spring, hibernate配置文件
     |     |----test
     |     |         |----java ——存放所有测试.java文件,如JUnit测试类
     |     |         |----resources ——存放项目资源文件,如spring, hibernate配置文件
     |----target ——项目输出位置
     |----pom.xml  ——用于标识该项目是一个maven项目

  3、发布到tomcat服务器

  方式一:打war包到tomcat/webapps下,Run as--->Maven Install,之后在target目录下会生成war包,复制到tomcat/webapps目录即完成部署。这种方式和非maven项目没什么区别,就是打包的方式不同。

  方式二:使用tomcat-maven插件,实现tomcat的热部署, 即修改方法内容不用重新打包部署。

  (1)在tomcat的的conf文件夹中,修改tomcat-user.xml,文件,增加启动权限;

  tomcat6管理员配置: 

  <role rolename="manager"/>

  <user username="admin" password="admin" roles="manager"/>

  tomcat7管理员配置:

  <role rolename="manager-script" />

  <role rolename="manager-gui"/>

  <user username="admin" password="admin" roles="manager-gui,manager-script"/> 

  测试是否配置成功 

  进入manager管理页面,URL:http://ip:端口/manager,输入设置的用户名、密码,进入到tomcat管理界面就说明配置成功。

  (2)maven的server的配置:在maven的安装路径找到conf目录下的setting.xml文件,在<servers>节点中添加tomcat7下配置的用户信息(id可以任意填写,但username和password必须和步骤1一致):

  <server>

    <id>tomcat7</id>

    <username>admin</username>

    <password>admin</password>

  </server

  (3)在pom.xml文件中添加插件

  <plugins>
    <plugin>

       <!--<groupId>org.apache.tomcat.maven</groupId> -->

       <!--<artifactId>tomcat6-maven-plugin</artifactId> --> <!-- 命令为tomcat6:redeploy -->

       <groupId>org.apache.tomcat.maven</groupId>

       <artifactId>tomcat7-maven-plugin</artifactId> --> <!-- 命令为tomcat7:redeploy -->

       <version>2.2-SNAPSHOT</version>

      <configuration>

        <!--<url>http://localhost:8080/manager</url>  --> <!-- tomcat6部署管理路径 -->

        <url>http://localhost:8080/manager/text</url><!-- tomcat7部署管理路径 -->

        <server>tomcat7</server><!--  与seting中的server的id一致  -->

        <username>admin</username> <!-- tomcat的管理员账号 -->

        <password>admin</password>

        <!--  <update>true</update>  --><!--  如果路径已经配置过了,需要打开此项 -->

        <port>8080</port>

        <path>/test-maven-web</path> <!-- 项目部署路径 -->  

        <charset>UTF-8</charset>

        <encoding>UTF-8</encoding>

        <!-- 运行redeploy命令前,要能正常访问http://localhost:8080/manager-->
      </configuration>
    </plugin>
  </plugins>

  (4)手动启动tomcat,通过maven命令打包并自动部署,项目右键--->Run as--->Maven build,第一次部署时Goals中输入:clean tomcat7:deploy,以后则输入:clean tomcat7:redeploy。如果是tomcat6则命令如下:mvn tomcat:deploy;如果是tomcat7或者tomcat8命令:mvn tomcat7:deploy。

 四、IDEA中如何使用(安装和配置同上,为了区分,路径不一样)

1、安装maven,安装路径:D:\apache-maven-3.6.1-bin

2、创建本地仓库:D:\apache-maven-3.6.1-bin\local-repository

3、配置本地仓库路径:打开D:\apache-maven-3.6.1-bin\apache-maven-3.6.1\conf中settings.xml文件,指定路径<localRepository>D:\apache-maven-3.6.1-bin\local-repository</localRepository>。

4、配置环境变量:修改path,加入D:\apache-maven-3.6.1-bin\apache-maven-3.6.1\bin;

5、IDEA中配置maven

File-Settings,点击Maven,修改Maven home directory为,D:\apache-maven-3.6.1-bin\apache-maven-3.6.1。

修改User settings file为,D:\apache-maven-3.6.1-bin\apache-maven-3.6.1\conf\settings.xml,同时将override勾选上。

此时,Local repository会自动检测到修改过的本地仓库的路径。

6、新建maven web项目

File-New-Project,选择Maven,选择Project SDK指定JDK版本,勾选Create from archetype使用Maven项目模板,选择org.apache.maven.archetypes:maven-archetype-webapp,点击Next。

指定GroupId:com.wd、ArtifactId:jdbc、Version:1.0-SNAPSHOT,点击Next。

修改Maven home directory为,D:\apache-maven-3.6.1-bin\apache-maven-3.6.1。此时,Local repository会自动检测到修改过的本地仓库的路径。

添加属性配置Add Maven Property,Name:archetypeCatalog,Value:internal。此属性是为了加快项目创建的速度。点击Next。

指定项目名称Project name:jdbc,项目路径Project location :D:\Workspaces-idea\jdbc。More settings默认就可以。点击Finish。

7、手动创建缺少的文件夹,结合上文的maven项目结构

File-Project Structure,点击Modules,选择Sources项,在main文件夹上右键,选择New Folder,输入java并点击OK。新生成的java文件夹点击右键,选择相应的文件源Sources。

同理resources文件也是一样的操作,new folder,填写文件名为resources,然后resources文件夹右键点击选择Resources。

最后,点击Apply,点击OK。

8、配置maven自动下载源码和文档

File-Setting,选择Build, Execution, Deployment, 选择Build Tools,选择Maven,选择Importing,定位 Automatically download,勾选 Sources 和 Documentation。

 

posted @ 2019-04-14 23:23  tt&yy  阅读(180)  评论(0编辑  收藏  举报