maven全称是apache maven project–apache的优秀开源项目,maven是java项目的构建和管理工具。maven这个词翻译为“专家”或者“内行”,是跨平台的项目管理工具。maven主要服务于java平台的项目构建,依赖管理,项目信息管理等。
接下来是项目构建的过程,通常项目构建的过程分为这六个步骤:
理想的项目构建是高度自动化、跨平台,可重用、的组件,使用maven就可以帮助我们完成上述项目构建的完整过程。
再有就是依赖管理。所谓的依赖管理其实就是使用maven来管理项目中所使用到的jar包,maven管理的方式就是“自动下载项目所需要的jar包,统一管理jar包之间的依赖关系”。
注意maven的使用依赖于java,因此需要提前安装java。
maven的安装
maven的用途很大,这里简单说一下:
1、用maven可以方便的创建项目,基于archetype可以创建多种类型的java项目;
2、maven仓库对jar包(artifact)进行统一管理,避免jar文件的重复拷贝和版本冲突;
3、团队开发,maven管理项目的release(正式版本)和snapshot(开发版本)版本,方便多模块(module)项目的各个模块之间的快速集成
点击这里使用镜像下载maven:maven下载
选择所需要的的版本后,接着选择binaries这个文件夹,再选择以.zip结尾的文件就可以了,然后进行下载,解压。接下来介绍maven解压后的目录结构,如下图所示:
bin:含有mvn运行的脚本;
boot:含有plexus-classwords类加载器框架;
conf:含有setting.xml配置文件;
lib:含有maven运行时所需要的java类库;
后面的3个txt文件主要针对maven版本,第三方软件进行简单介绍。
接下来进行maven环境变量的配置:我的电脑–>属性–>高级系统设置–>环境变量–>系统变量–>新建:变量名:m2_home;变量值:g:applicationmavenapache-maven-3.6.0(也就是maven解压后的目录),接着找到path在环境变量值尾部加入;%m2_home%bin; 注意前面的分号 !
最后检查maven是否安装成功: 打开dos窗口运行命令mvn -version,出现如下图所示的信息说明安装成功:
修改maven本地仓库位置
通常maven会将下载的类库(jar包)放置到本地的一个目录下(默认情况是c:我的文档中.m2.repository),如果想重新定义这个目录就需要修改maven本地仓库的配置,这个过程也很简单,只需要四步:
第一步:在自己指定的位置处创建一个文件夹repo(名称随意),本人创建的位置是:g:applicationmavenrepo;
第二步:在maven文件夹下找到conf文件夹,并找到其中的settings.xml文件,然后复制settings.xml文件放于g:applicationmaven,其实就是直接放在与你新建的repo文件夹同一目录:
第三步:修改这个settings.xml及前面conf文件里的settings.xml(也就是两个settings.xml文件),找到55行,修改maven默认的仓库位置,如下图所示:
第四步:测试效果,打开dos窗口运行命令mvn help:system,出现如下图所示的信息说明配置成功(这个过程需要一定时间):
接下来介绍maven项目的目录结构:
创建一个maven项目
此处使用idea创建一个maven项目,先在idea里面进行maven的配置:
点击上面的新建图片的ag凯发k8国际首页,点击configure–>settings:
注意这里maven的解压路径,还有如果你的maven是默认安装,那么使用默认配置即可。由于我在前面修改了maven的配置,因此那个maven home directory就需要设置为maven的解压路径。注意一下这里的user settings file,你可以使用conf目录下的settings.xml,也可以使用repo同级下的settings.xml。最后的loacl resposity设置为你repo文件所在路径即可。按照图上所示进行配置,然后单击ok就好。
接下来正式开始创建一个maven空白项目:
然后一直next就可以了,然后系统会自动创建项目。(groupid是项目名称,artifactid是项目中某一模块的名称,version是版本号)创建完成如图所示:(第一次使用maven可能会花一点时间,因为maven的中央仓库里面还没有文件,你需要去下载)
如果在此过程中出现c:/users/administor/appdata/local/temp/archetype,请参考这篇文章:解决办法
打开里的pom.xml文件,它的作用就是配置一些jar包的引用地址:
这里面有很多,目前先关注这个:
这个就是jar包的依赖配置,这里是配置了junit这个jar包,关于包的查找可以点这里:maven官方仓库,你需要什么就去这个网站进行搜索,然后复制dependency标签即可。groupid是仓库中生成包的路径,artifactid当前存放包的最终一个目录,version就是版本号。
下面是一些常用的maven命令:
清除命令:mvn clean(删除target,不会删除本地仓库)
编译命令: mvn compile
编译、运行、发布命令:mvn install
编译、运行、不负责发布命令:mvn package
编译、如果test包下有java代码也会编译和运行,但也一样不会发布到本地仓库:mvn test
跳过单元测试:mvn clean package -dmaven.test.skip=true
mvn package与mvn install的区别:主要区别就是package命令不会将target内容发布到本地仓库。(因此建议一般使用mvn install)
但是我们一般不会直接去使用这些命令,因为idea里面已经集成了这些命令。点击idea右侧的maven projects:
lifecycle是maven项目的生命周期,而plugins则是针对第三方依赖包的管理。详细参看这篇文章:maven lifecycle 与 plugin
clean:用于清除之前构建生成的所有文件,其中具体为清除target目录中的所有文件,包括该目录。
validate:用于验证项目是否真确,并且其说有必要信息是否都可用。
compile:编译项目的源代码,主要是java文件,一般是编译scr/main/java或是scr/test/java里面的文件。
test:用合适的测试框架来进行测试,测试compile中编译出来的代码,测试的东西一般不加包和部署。
package:获取compile中编译好的代码并将其打包成可分类的格式,如jar。
vertify:这步是用来验证test,检查test的结果是否满足标准。
install:将软件包安装到本地存储库中,确保本地其他项目可能需要使用它,也就是说某个项目被打包成jar包,必须先install才能被引入使用。(例如,装了core才能用oms)。
一般都是先clean,后complie,再package,接着install,最后deploy。
演示编译
接下来演示如何将一个项目打包为jar,在前面的app同级目录新建一个util包,在里面新建一个stringutil.java文件:
public class stringutil { /** * 判断字符串为空,空则返回true,反之则返回false * **/ public static boolean isempty(string string){ return null==string || "".equals(string); } /** * 判断字符串是不为空,空则返回false,反之则返回true * **/ public static boolean isnotempty(string string){ return !isempty(string); }}
注意此处仅仅是演示,所以不再新增其他的业务逻辑。然后点击右侧的maven projects,按照顺序依次运行相应命令:
然后你会发现项目结构发生了变化,左侧多了一个target文件及一个demo.jar包:
接下来新建一个web项目,然后引入刚才的jar:
然后一直next就可以了,然后系统会自动创建项目,创建完成如图所示:(第一次使用maven可能会花一点时间,因为maven的中央仓库里面还没有文件,你需要去下载)
然后配置tomcat访问(注意使用war exploded,具体可参考idea中的war和war exploded的区别,说白了war是打包启动,war xxx是热启动。通俗点就是当你资源发生修改时,后者可以跟着重新启动修改,而前者需要手动启动)。
接下来便是项目文件和测试文件目录的创建:在 main 文件下面创建一个java文件夹 ,然后按照如下操作:光标移到java文件夹上面,然后右键拉到底部,找到make directory as ,再单击出现的sources root即可,会发现该文件变成了蓝色。
紧接着在src文件下,创建mian文件的测试文件夹,名称为test,然后再在test文件夹下面新建java文件夹 ,然后按照如下操作:光标移到java文件夹上面,然后右键拉到底部,找到make directory as ,再单击出现的test sources root即可,会发现该文件变成了绿色。
接下来开始引入jar包,打开之前那个mavendemo项目的pom.xml文件,找到关于这个项目的描述信息:
也就是这个:
然后回到helloweb项目,打开它的pom.xml文件,找到
你可以尝试将前面那个
然后在mian文件下的java包中新建一个test.java,来尝试测试一下:
public class test { public static void main(string[] args){ string a = ""; system.out.println(stringutil.isempty(a)); }}
运行结果:true。说明测试通过,我们成功的引入了jar包。
如何引入本地的jar包
前面修改过maven的本地仓库地址为:g:applicationmavenrepo,因此请注意你所有在pom.xml文件中配置的依赖其实已经下载到了这个文件夹下面,例如里面的的junit的配置:
因此通过这个可以推断出这个juint文件的位置为:g:applicationmavenrepo junitjunit4.11,不信的话去看一下本地的目录结构:
确实如此,所以当你知道某个文件在哪里,那么你也可以配置依赖。
按照这种方式配置servlet的依赖:g:applicationmavenrepojavaxservletservlet-api2.5,那么您在pom.xml中的依赖配置为:
注意到没,我们在
登录系统演示
接下来通过servlet来编写一个登录系统,这样能体验完整的maven功能。
在java包下面新建一个com.test.servlet包,接着新建一个loginservlet.java文件,让它继承httpservlet类,并重写doget和dopost方法(忽略导包代码)
public class loginservlet extends httpservlet { @override protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { this.dopost(request,response); } @override protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { //设置页码的字符编码集 request.setcharacterencoding("utf-8"); response.setcharacterencoding("utf-8"); //获取用户提交信息 string username = request.getparameter("username"); string password = request.getparameter("password"); if(stringutil.isnotempty(username) && stringutil.isnotempty(password)){ request.getrequestdispatcher("/success.jsp").forward(request,response); }else{ request.getrequestdispatcher("/fail.jsp").forward(request,response); } }}
然后去web.xml文件中配置访问路由:
接着修改index.jsp页面信息为:
<%@ page contenttype="text/html;charset=utf-8" language="java" pageencoding="utf-8" %>
登录
继续新建一个fail.jsp页面,里面的代码为:
<%@ page contenttype="text/html;charset=utf-8" language="java" %>
对不起,登录失败!
同样也需要新建一个success.jsp页面,里面的代码为:
<%@ page contenttype="text/html;charset=utf-8" language="java" %>
恭喜,登录成功!
然后运行项目,在浏览器地址栏中输入地址:http://localhost:8080/,发现项目测试通过。
ag凯发k8国际的版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。