文档章节

Maven工具--项目的分布式开发

kangsheng
 kangsheng
发布于 2017/02/28 15:49
字数 1395
阅读 53
收藏 0

1.Maven的下载和基本配置

①可以到Maven的官网上进行下载,下载后的压缩文件进行解压,解压的路径必须是英文,无空格的路径。

如:我的解压文件路径就是    D:\JAVA\Maven\apache-maven-3.2.2

②配置系统环境:新建一个M2_HOME的系统变量,路径值就是maven的解压出来的文件的目录,

         D:\JAVA\Maven\apache-maven-3.2.2

为了方便的使用maven的命令,在Path变量中追加一个maven解压出来的路径中bin文件的路径,

     D:\JAVA\Maven\apache-maven-3.2.2\bin

③配置maven的本地仓库      打开maven的解压路径/conf/setting.xml

   <localRepository>D:/JAVA/Maven/RepMaven</localRepository>  就是指向maven的本地仓库。其中RepMaven就是存放各种依赖或者说jar包的文件夹。

扩:maven的核心文件(也就是上面的maven解压出来的文件)是没有包含各种依赖或者插件(通俗就是jar包),每次要使用到这些插件或者依赖,(如果没有配本地仓库,maven会先在默认仓库中查找,默认仓库是在./m2/repository中)    如果maven配置本地仓库,就会带本地仓库中查找插件,如果还没有找到,就联网到中央仓库去查找,如果还没有,就不存在。

④eclipse中配置maven插件。一般来说,eclipse中都自带有maven插件,在window-preferiens中找到maven,配置installations (这里通过add来指向maven的解压文件) 和配置User Settings (这里就是通过browse来指向maven的解压文件中的/conf/setting.xml)

2.Maven的基本目录结构:

根路径 :文件名

--src  :主要的源文件存放

    --main :主代码和主配置文件

        --java :主代码

        --resources :主配置文件

    --test

        --java :测试代码

        --resource:测试用的而配置文件

--pom.xml :核心的配置文件,用来指定该maven项目的依赖,关系。

 3.基本的maven命令:

①mvn -version 查看mvn的版本信息,一般用来测试是否成功安装

②mvn compile  编译maven主代码,会在项目路径下产生一个target文件,target文件中的classess文件存放编译后的文件

③mvn test-compile  编译maven的测试代码,在target文件中产生一个test-classess文件,存放测试代码编译后的文件

④mvn package  对maven项目进行打包,会在target目录下产生几个文件,其中有一个war包,是可以在tomcat中部署的

⑤mvn clean 清理maven项目

4.maven项目核心文件--pom.xml

setting.xml是maven这一个工具的核心文件,pom.xml是每一个maven项目都会有一个,就是web程序的web.xml文件。

① 在pom.xml中,我们通过三个坐标来指定一个依赖的唯一性。

groupId : 一般是公司或者组织名倒序+项目名

artifactid : 模块的名称

version:版本号。

如:pom.xml中对junit的依赖,maven的好处就是我们不需要自己在项目中一个一个的添加jar包,通过pom.xml,让maven自动的把我们需要的jar包引入。

<groupId>junit</groupId>          
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>

②依赖范围--scope

在上面的例子中,我们看到了scope这个节点,他表示的是依赖范围是test级别的。

maven的依赖范围通俗的说就是依赖的jar作用的时期。主要有三种:

compile依赖范围  : 这是maven默认的依赖范围,表示该依赖(jar包)对主程序的开发有效,和对测试程序的开大也有效,最终会参与到打包中。例如spring-core 的jar包,最后部署到了web的lib文件中。

test依赖范围:一般用于表示该依赖只对测试程序有效,对主程序的开发无效,也不会参与到打包中。例如junit的jar包,开发主程序不需要,最后也不需要要部署到web中的lib文件中。

provided依赖范围:对主程序有效,对测试程序也有效,但是不参与到打包中。例如servlert-api的jar包,我们在eclipse中开发如果没有该jar包,那么httpServlertRequest类就不能用。但是tomcat中又有同样的包,如果部署到lib文件中,就会引起jar冲突。

③依赖的传递性

依赖具有传递性,上一级引入的依赖范围是compile的 jar包,下一级不需要重新引入,会自动的引入上一级引入的jar包。

 

maven工程的种类:

jar:普通的java工程,打包后就是一个堆jar文件。

war:web工程,打包后就是一个web工程,能直接在tomcat中运行

pom:本身没有实际的开发意思,主要作用是制定一些约定,或者说是基础的依赖规范,有点类似于java的抽象类

 

继承机制和聚合机制

继承机制的目标是针对非compile依赖范围(compile范围的也可以用)的jar包的版本的控制问题。通过创建一个pom形式的工程,在pom.xml文件中规定相应依赖的信息。在子工程中,通过pom.xml中parent节点来指向父工程。

聚合机制有点类似于360的一键安装。在pom工程中通过<Modules>节点来要配置一起安装的maven项目。

 

 

 

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
kangsheng
粉丝 0
博文 4
码字总数 4311
作品 0
娄底
基于Dubbo的分布式系统架构(四)

基于 Dubbo 的分布式系统架构视频教程 作者:(原著)吴水成,840765167@qq.com,wu-sc@foxmail.com 搭建敏捷高效的持续集成管理平台 1、持续集成介绍 持续集成是一种软件开发实践团队开发成...

有什么关系呢
2016/11/16
161
2
生活不止有苟且,还有N个免费DevOps开源工具

你喜欢免费的东西吗?获得开发者社区支持的自动化,开源的工具是大家梦寐以求的。这里列举了 N多款最棒的开源工具,可以帮助你很好的实行 DevOps。对的,生活不止有眼前的苟且,还有诗和远方的...

oschina
2016/04/04
7K
21
50+ 最棒的 DevOps 开源工具

你喜欢免费的东西吗?获得开发者社区支持的自动化,开源的工具是大家梦寐以求的。这里列举了 50+ 款最棒的开源工具,可以帮助你很好的实行 DevOps。 大图请点击这里。 开发工具 版本控制&协作...

OSC编辑部
2015/08/10
5.4K
1
徐安(徐工)/distributed-tool-parent

distributed-tool 项目介绍 一个分布式常用工具组件。例如:分布式缓存、分布式序列号生成器、分布式锁、分布式订阅发布等等。 目前微服务开发的系统很多,这个就涉及到分布式集群问题。像以...

徐安(徐工)
08/24
0
0
分布式常用工具组件 distributed-tool V1.1 发布

项目介绍 一个分布式常用工具组件。例如:分布式缓存、分布式序列号生成器、分布式锁、分布式订阅发布等等。 目前微服务开发的系统很多,这个就涉及到分布式集群问题。像以前如果是单机,那么...

徐安是个好人
08/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

可爱的python测试开发库(python测试开发工具库汇总)

欢迎转载,转载请注明来源: github地址 谢谢点赞 本文地址 相关书籍下载 测试开发 Web UI测试自动化 splinter - web UI测试工具,基于selnium封装。 链接 selenium - web UI自动化测试。 链...

python测试开发人工智能安全
今天
2
0
Shiro | 实现权限验证完整版

写在前面的话 提及权限,就会想到安全,是一个十分棘手的话题。这里只是作为学校Shiro的一个记录,而不是,权限就应该这样设计之类的。 Shiro框架 1、Shiro是基于Apache开源的强大灵活的开源...

冯文议
今天
1
0
linux 系统的运行级别

运行级别 运行级别 | 含义 0 关机 1 单用户模式,可以想象为windows 的安全模式,主要用于修复系统 2 不完全的命令模式,不含NFS服务 3 完全的命令行模式,就是标准的字符界面 4 系统保留 5 ...

Linux学习笔记
今天
2
0
学习设计模式——命令模式

任何模式的出现,都是为了解决一些特定的场景的耦合问题,以达到对修改封闭,对扩展开放的效果。命令模式也不例外: 命令模式是为了解决命令的请求者和命令的实现者之间的耦合关系。 解决了这...

江左煤郎
今天
3
0
字典树收集(非线程安全,后续做线程安全改进)

将500W个单词放进一个数据结构进行存储,然后进行快速比对,判断一个单词是不是这个500W单词之中的;来了一个单词前缀,给出500w个单词中有多少个单词是该前缀. 1、这个需求首先需要设计好数据结...

算法之名
昨天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部