Maven
1.Maven的简介
Maven是项目进行模型抽象,充分运用面向对象思想,通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven除了以程序构建能力为特色之外,还提供高级项目管理工具。
2.Maven的主要作用
1.对第三方jar包的统一管理。意思其实就是通过本地仓库或者是远程仓库更或者是中央仓库进行依赖管理,省去了导入jar包的操作。不过一般我们在配置Maven时会选择阿里的远程仓库,不会去连接中央仓库,因为太慢了,而且阿里不仅拥有中央仓库的所有jar包而且开源了自身许多有用的jar包,如数据库连接池jar包Druid(德鲁伊)。
2.将项目分模块构建,提高开发效率。意思就是说使用Maven时,其构建项目时,会将包分好,方便工作人员协同开发,提高效率。
3.Maven提供一套对项目生命周期管理的标准。意思是说,Maven为项目提供了许多有关jar包的作用域,作用范围,类的生命周期,运行范围。以及项目的编译,部署等都提供了很好的接口,只要配置下就好了。减少了开发人员思考这些无关紧要的东西,只要遵循Maven的标准就可以了。
3.Maven下载后的配置
Maven不是下载好了就能够使用了,需要更改其一些配置方便我们开发。首先,打开Maven下conf文件夹下settings.xml文件,更改这个配置文件。在大约55行处有一个<localRepository>标签,将其更改成自己想要的目录,来存放Maven将来要下载的jar包目录。我的如下:
<localRepository>D:\apache-maven-3.3.9\repository</localRepository>
更改完找到大约150行左右有一个<mirrors>标签,在这个标签内添加如下代码,以便到时本地仓库没有相关jar包时,可以到阿里的远程仓库下载相关jar包,方便,快速,减少下载时间。(如果不更改,默认使用Maven的中央仓库下载很慢)。添加的代码如下:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
这样就配置完成了,就可以很方便的使用了。当然,方便使用我们要在什么地方使用呢,Maven是构建项目的,所以一般他需要和开发使用的IDE集成起来使用,我使用的是IDEA,我简单说下在IDEA中如何使用MAVEN。
4.IDEA中的Maven
在IDEA中,使用Maven很简单,首先IDEA本身自带了Maven,不过其自带的Maven较为垃圾,不适合开发,所以一般都关联自己的Maven,配置很简单。点击Files->Settings在搜索框中输入Maven,就可以看到Maven选项,点击Maven选项
在右侧关联上自己的Maven,如图是我自己的
注意:只需在选择文件处找到自己的Maven就可以了,不用其他操作,将Override勾选上即可。然后Apply和OK就完事了。
5.IDEA中创建Maven项目
1.IDEA中创建JavaSe的Maven项目。这个需求一般来说有点不可能,一般能接触到Maven的各位一般都已经接触Web了,对于这个根本没需求,不过这个是给小白看的,高手请绕过后面部分的Web项目构建。首先,在IDEA中,project对应Eclipse的工作空间,module对应Eclipse的project。所以在idea中的一个project中创建一个module,并选择Maven,在右边查找到红线所示的quickstart。如图:
点击下一步,如下图
Groupid一般是公司域名的倒写,这里我只是用自己名字的缩写模仿了下。至于Artifactid一般是项目名称。当然,进入公司后具体由公司来决定,不用你操心,这里写你的项目名称就ok。还有一点,在上面还有两个选项,这个一般你自己写项目用不到,如果不是默认的none而是其他的请改掉选择none。写好点击下一步
这里一般正常就不用改,看下是否是自己module名称。如果是请点击下一步,如果不是请查看前面步骤,如果前面没问题还是这样,就自己修改。然后点击finish就可以了。
出现这个表示创建成功了。项目结构如下图
JavaSe无非就是导入一些基础的jar包,如jstl标签库,数据库连接池,数据库驱动,单元测试等等,在pom.xml中导入相关依赖即可。
6.一次创建,永远简单
使用Maven构建web项目是一个挺令人烦躁的事情,Maven自身带的骨架还是要进行修改,所以最好还是自己弄个骨架,以后永远方便。首先,构建骨架还是要先构建Maven的web项目。同样在idea中的一个project中创建一个module,并选择Maven,在右边查找到红线所示的webapp。
点击next
Groupid一般是公司域名的倒写,这里我只是用自己名字的缩写模仿了下。至于Artifactid一般是项目名称。当然,进入公司后具体由公司来决定,不用你操心,这里写你的项目名称就ok。还有一点,在上面还有两个选项,这个一般你自己写项目用不到,如果不是默认的none而是其他的请改掉选择none。然后点击下一步,如图
看一下是否是自己的Maven,是就直接下一步。不是请看前面的配置环节,如果进行了前面的配置操作还不是自己的Maven,就自己手动选择吧。
看下是自己项目名称不,是就下一步,不是请修改。然后finish,看是否成功
成功后,请看项目结构图
这个目录,并没有生成好,所以需要修改下。在src下添加test文件夹,
在main下添加java文件夹和resources文件夹,同样,在test文件下一样添加java和resources文件夹。添加好后如下图
添加完后,给这几个文件夹添加如下属性,右击main下的java文件夹,选择make directory as选项。
然后对应选择,main下的java选择蓝色的sources root选项,其他三个对应选,结果如下图。
这样就搭好了骨架,为了能生成更好的骨架,这里呢选择了修改一些东西,这些操作不是必须。首先为了能支持servlet的注解开发,这里修改了web.xml如代码,剩下的没改。
<?xml version="1.0" encoding="UTF-8"?>
<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_3_1.xsd"
version="3.1">
</web-app>
然后为了减少以后的操作,给pom.xml添加常用的依赖添加到骨架中,顺便将骨架生成的插件集合进来,打开pom.xml,在plugins中添加插件代码
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>3.0.0</version>
</plugin>
然后添加的常用依赖代码,这个根据自己的情况选择。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
<!-- dbutils -->
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.6</version>
</dependency>
<!-- c3p0 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<!--jsonlib的依赖-->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<!-- redis的依赖 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
</dependency>
<!-- dom4j -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<!-- jaxen -->
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1-beta-6</version>
</dependency>
<!--servlet的api-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--commons io 依赖-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.1</version>
</dependency>
好了这些操作完成,可以使用指令生成骨架了。点击如下图
然后输入指令:
这里我将三个用到的指令给出来
archetype:create-from-project 创建骨架来自工程
install
archetype:crawl
第一个先输入如下指令,点击execute
成功会输出如下图
接着如下图操作,这部的意思是让Maven下载骨架
成功如下图
一样第三部输入如下指令,如图点击execute
成功如下图:
好了所有操作完成,现在我们在Maven中创建我们的骨架
首先我们找到我们骨架的坐标,我们自己创建的骨架在Maven的本地库中,我的目录如下,就是Maven本地仓库加你创建骨架时的域名加项目名+archetype
D:\apache-maven-3.3.9\repository\com\wuhaitao\project-archetype
打开如下图
是个坐标,然后打开idea在project中新建一个module,如图
输入好坐标后点击ok就生成了咱们的骨架如下图
然后点击咱们的骨架,点击next,接下来就是上面创建web的Maven项目了,向上面所写的那样建就好。
在点击finish后
然后就可以了