初识Maven_maven 记事本-程序员宅基地

技术标签: Maven  

公司项目用到了Maven,一直只是听说过并没有实际研究过它到底是干什么的,每天用到的无非就是之前写好的clean,install,然后run,趁这个端午假期,来个helloworld吧!

首先提一个问题,Maven是干什么用的?

我一开始觉得,maven就是管理jar包用的,在这之前我们做开发之前还得辛辛苦苦去找jar包,同时还得担心版本不匹配等问题,有了Maven我们就不用去刚这个了,Maven帮我们管理你所需要的jar包,下面是来自oracle的Java社区里面的一段文字:(帖子地址:http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-1-406235-zhs.html)

Maven 是一个项目管理和构建自动化工具。但是对于我们程序员来说,我们最关心的是它的项目构建功能。所以这里我们介绍的就是怎样用 maven 来满足我们项目的日常需要。
Maven 使用惯例优于配置的原则 。它要求在没有定制之前,所有的项目都有如下的结构:
 

目录

目的

${basedir}

存放 pom.xml和所有的子目录

${basedir}/src/main/java

项目的 java源代码

${basedir}/src/main/resources

项目的资源,比如说 property文件

${basedir}/src/test/java

项目的测试类,比如说 JUnit代码

${basedir}/src/test/resources

测试使用的资源

 

一个 maven 项目在默认情况下会产生 JAR 文件,另外 ,编译后 的 classes 会放在 ${basedir}/target/classes 下面, JAR 文件会放在 ${basedir}/target 下面。

好,抠字眼的东西我就说(抄)到这里,我们开始实战Maven吧,我目前用的最多的两个servlet引擎是tomcat和jetty,学新的东西我们一般喜欢helloworld程序,下面我就分别就这两个来个helloworld吧。

(1)本地安装Maven

下载地址http://http://maven.apache.org/download.cgi 现在maven已经出到maven3了,请根据需要下载

下载下来之后解压(在安装之前需要确认你已经装好了jdk,因为maven的运行需要Java环境)

安装maven同样的也需要去配置环境变量,如图所示:



完了之后我们需要测试一下我们的maven是否安装成功,测试也上图吧:


出现如图所示的提示就说明你安装成功了。

(2)安装eclipse插件

接下来我们进入eclipse的插件安装,这个我就不再说明了,熟悉eclipse的都知道怎么用,不会的百度一下吧。

不过要注意的是,安装完Maven插件之后需要配置maven的安装目录和设置user settings(使用tomcat会用到)

 


(3)新建Maven Project

到这里就当你什么都搞定了,接下来我们正式开始新建我们第一个Maven项目。



解释一下这几个,第一次用的人估计会很迷惑这到底是什么鬼。

GroupId属性是一个组织或者项目(比如开源项目)的唯一ID,我们平时用的什么com开头的那些就是一般我们这个地方要填的东西了。

ArtifactId属性就是你所要构建的项目的名称。(注:这个截图有点早,我最终写的是maven)

Version属性就是项目的版本,这个一般默认就好。

还有一个packaging,创建项目第一步如果第一个勾选了就能看到别的选项,现在默认给我们设置了这个属性值为war了。

据说这个几个会形成Maven的坐标,好像很神奇的样子,后面说到就明白了。

点击Finish我们可以大概看到文件目录是什么样的


maven 的 archetype 插件建立了一个 helloworld 目录,这个名字来自 artifactId 。在这个目录下面,有一个 Project Object Model(POM) 文件 pom.xml 。这个文件用于描述项目,配置插件和管理依赖关系。
源代码和资源文件放在 src/main 下面,而测试代码和资源放在 src/test 下面。所谓的约定优于配置就是说我们只要按照这个文件目录去开发,maven就会帮处理日常的事务compile,test,package等等。

Maven项目的核心就是那个pom.xml文件了,它定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等等。

这个pom.xml还大有文章,目前helloworld程序还不需要理解太过深入。

修改index.jsp,默认生成了,我们稍作修改一下以确定最后效果出来的是自己写的jsp页面


(4)配置Servlet引擎

1.Tomcat的配置

Tomcat我们现在最常用的还是Tomcat6吧,那我就以6为例吧。(打个广告)我的资源里有打包好的Tomcat6,7,8,32位的,欢迎大家去下载。http://download.csdn.net/detail/donggua3694857/9546360

首先我们需要修改一下conf目录下的tomcat_user.xml文件,打开并找到<tomcat-users>节点,添加新的角色和用户,如图所示


然后我们需要给Maven配置Tomcat Server,在settings.xml里面<servers>节点添加,要记得那个id。之后在pom.xml中配置这个server,用户名密码和你在tomcat_user.xml设置的一样。


最后在maven项目里面添加tomcat的插件就好了,添加方法很简单,找到<plugins>节点,在后面加上如图示的xml代码:


保存,大功告成,等maven帮我们把东西下载完......

跑起来吧,先把tomcat运行起来,右键maven build,输入命令tomcat6:run,出现这个就说明你的tomcat运行成功了


跑完然后再输入命令tomcat6:deploy,运行,出现这个就说明你部署成功了


接下来去浏览器输入url,看看效果吧(我把端口改成了9090,tomcat修改端口具体不清楚怎么做请自行百度)


2.Jetty的配置

Jetty的配置就相对来说比较简单,毕竟jetty架构比较简单嘛。

废话不多说直接上pom.xml配置


当然用jetty我们需要给他加个servlet的jar包。

maven里面管理依赖只需要配置就好了。


在今后的开发中如果遇到需要添加新的jar包,就去maven的仓库里面去找http://mvnrepository.com/

找到后上面就有相关的配置,而你只需要Ctrl+C然后Ctrl+V到你的pom.xml文件里面就好。

配置好后,跑起来看看吧,maven build输入命令jetty:run

然后去浏览器看看(端口8090是在pom.xml里面设置的


以上就是关于maven的helloworld程序。哇,要学的东西还有很多啊。希望大家多多支持。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/donggua3694857/article/details/51638598

智能推荐

centos7源码方式安装zabbix-4.0_centos7从源代码安装zabbix4.0-程序员宅基地

文章浏览阅读1.3k次。1.关闭防火墙systemctl stop firewalld.service #临时关闭firewallsystemctl disable firewalld.service #禁止firewall开机启动2.替换yum源mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backupwg..._centos7从源代码安装zabbix4.0

Hbase安装及配置_hbase配置步骤-程序员宅基地

文章浏览阅读8.6k次,点赞11次,收藏82次。实验目的:(1)熟悉Hadoop相关操作。(2)掌握虚拟机上Hbase的安装方法并可以熟练安装Hbase。实验要求:(1)根据Hadoop版本安装合适的Hbase。(2)安装好hbase后进入hbase熟悉数据库相关操作。(1)在官网下载Hadoop对应的Hbase的版本,下载完成之后,进行解压,并将其解压之后的结果传输到虚拟机内/opt/modules文件夹下。这些截图是我第一次装的时候的版本,建议大家换成高一些的版本,这个版本有点低了。其中,把hbase-重命名为hbase,方便后续._hbase配置步骤

springBoot集成redisCluster-程序员宅基地

文章浏览阅读94次。本文主要内容:springBoot简介,在SpringBoot中如何集成Redis,可配置Redis集群。关于SpringBoot你想要的,这里都有:https://spring.io/projects/spring-boot 这是SpringBoot的官方文档,开发者已经将你需要的东西都给你了。SpringBoot是一个大的容器,可以在这里很轻松地创建各种Spring应用,并且轻..._springboot 2.0.5 release redis cluser

Transformer新型神经网络在机器翻译中的应用 | 公开课笔记-程序员宅基地

文章浏览阅读2.1k次。嘉宾 | 于恒来源 | AI科技大本营在线公开课编辑 | Jane于恒:直播间的朋友大家好!欢迎大家来到本次AI科技大本营公开课,我是本次讲师于恒。在讲课开始之前先简短..._transformer 多卡

ReactNative NodeJs v5.7.0稳定版官方下载_native.js下载-程序员宅基地

文章浏览阅读1.2k次。Windows 32-bit Installer: https://nodejs.org/dist/v5.2.0/node-v5.2.0-x86.msiWindows 64-bit Installer: https://nodejs.org/dist/v5.2.0/node-v5.2.0-x64.msiWindows 32-bit Binary: https://nodejs.org/di_native.js下载

来来来,一起来做四道面试真题-程序员宅基地

文章浏览阅读381次。来来来,一起来做四道面试真题1.导语下面是前两天某哥们面某大厂的面试真题。最大连续子序列深拷贝带指向随机节点的链表求32位整数中二进制1的个数大数乘法本节重点阐述这四道题的思路与实现,并..._面试真题有版权吗

随便推点

springboot【19】日志管理之使用AOP统一处理Web请求日志-程序员宅基地

文章浏览阅读3.4k次。AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是Spring框架中的一个重要内容,它通过对既有程序定义一个切入点,然后在其前后切入不同的执行内容,比如常见的有:打开数据库连接/关闭数据库连接、打开事务/关闭事务、记录日志等。基于AOP不会破坏原来程序逻辑,因此它可以很好的对业务逻辑的各

Python——列表排序和赋值_python 列表赋值-程序员宅基地

文章浏览阅读4.4k次,点赞2次,收藏4次。(x, y表达式) for x in 列表1 for y in 列表2 if 条件表达式]根据可迭代对象参数iterable,返回一个新的排序后的列表。[x表达式for x in 列表if 条件表达式][x表达式for x in 列表if 条件表达式][x表达式for x in 列表if 条件表达式][x表达式for x in 列表if 条件表达式]返回一个将序列seq中的元素顺序反转的迭代器对象。根据一个列表中的每个元素通过某种运算或筛选得到另。不比较元素大小,直接将列表ls中的元素逆序。_python 列表赋值

Codeforces990 E. Post Lamps(复杂度分析)-程序员宅基地

文章浏览阅读121次。题意:解法:暴力跳的复杂度是O(n/1+n/2+....)=O(n*log).但是有m个位置被禁止了,每次遇到被禁止的位置,我们需要回退到左边第一个未被禁止的位置,然后放路灯,回退造成的额外复杂度大概是O(m/1+m/2....)=O(m*log)?总复杂度在可接受范围内.code:#include<bits/stdc++.h>#define int long longusing namespace std;const int maxm=2e6+5;int mark_e. post lamps

python3怎么调用百度搜索推广API,最新能成功的方法_百度api高级搜索-程序员宅基地

文章浏览阅读914次。最近需要用到百度竞价后台的关键词规划师,后台虽然也能查,但是只能单次查1000个,有时候有很大量词需要查的时候就感觉工作量那个巨大。。所以为了以后工作方便,想做一个工具,方便使用。查看百度营销api官方文档,找到你需要的api,例如我需要查的关键词规划师就是在辅助里面,当然你也可以用postman测试。这些调试工具测试通了以后就开始转成python吧,特别推荐postman里面可以直接把内容转化成代码,但是我就是在这个地方遇到了个大坑,我看别的作者也是用这个转代码的,结果没问题,但是我需要的_百度api高级搜索

How&nbsp;to&nbsp;Set&nbsp;Alert&nbsp;Thresholds_threshold must be numeric and non-nan, try sys.max-程序员宅基地

文章浏览阅读654次。Setting Alert ThresholdsFor each tablespace, you can setjust percent-full thresholds, just free-space-remaining thresholds,or both types of thresholds simultaneously. Setting either type ofthresho_threshold must be numeric and non-nan, try sys.maxsize for untruncated repre

noteexpress如何不生成校对报告_noteexpress校对报告-程序员宅基地

文章浏览阅读3.1k次。word----->noteexpress------>格式化--------》不打勾生成校对报告即可。Good luck. _noteexpress校对报告