文档章节

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

kangsheng
 kangsheng
发布于 2017/02/28 15:49
字数 1395
阅读 49
收藏 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
N 个免费 DevOps 开源工具,没用过,至少应该了解!

在介绍Devops工具之前,先跟随码花来了解下:Devops是个啥? Devops=【Development】+【Operations】。 简言之,Devops主要用于开发、测试、运维之间的沟通、协作与整合,减少开发和运营之间...

oschina
2016/05/20
8.8K
20
60 个 DevOps 开源工具,你在用哪些?

原文出处:Mrina Natarajan 译文出处:开源中国 你喜欢免费的东西吗?获得开发者社区支持的自动化,开源的工具是大家梦寐以求的。这里列举了 60 多款最棒的开源工具,可以帮助你很好的实行 De...

Mrina Natarajan
2016/03/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
0
0
spring EL 和资源调用

资源调用 import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.Resource;......

Canaan_
今天
0
0
memcached命令行、memcached数据导出和导入

一、memcached命令行 yum装telnet yum install telent 进入memcached telnet 127.0.0.1 11211 命令最后的2表示,两位字节,30表示过期时间(秒) 查看key1 get key1 删除:ctrl+删除键 二、m...

Zhouliang6
今天
0
0
Linux定时备份MySQL数据库

做项目有时候要备份数据库,手动备份太麻烦,所以找了一下定时备份数据库的方法 Linux里有一个 crontab 命令被用来提交和管理用户的需要周期性执行的任务,就像Windows里的定时任务一样,用这...

月夜中徘徊
今天
1
1
shell-日志脚本小实验

1.查找日志2018-8-15,求得那一分钟访问量最大。 #/bin/bash#from cc#2018-8-15#2018-08-15.log 哪一分钟 访问量 最大for d in `ls /data/nginx/logs/`doif [ -a 2018-08-15...

chencheng-linux
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部