Maven

一.Maven是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的

二.Maven的好处:

0.节省空间:对jar包做了统一管理 依赖管理,项目里无需放jar包

1.一键构建:自带tomcat,可以单独运行

2.可跨平台:纯java开发

3.应用在大型项目可提高开发效率:分模块开发

互联网项目 按业务分

传统项目 按层分 entity dao service web

三.依赖管理

四.项目一键构建

编码 编译 测试(junit) 运行 打包 部署

一个 tomcat:run就能把项目运行起来

Maven能干的事:

编译 测试(junit) 运行 打包 部署

五.Maven的安装配置

http://maven.apache.org/download.cgi 下载相应压缩包

直接解压到一个没有中文没有空格的文件夹里解压后的目录如下:

Maven软件的核心文件:

六.Maven环境变量配置

要配置jdk, maven3.3.9这个版本所需的jdk版本必须要1.7以上

最终要运行的是maven软件中bin目录的mvn命令

所以要配置maven的环境变量

在系统变量添加

环境变量的名称:MAVEN_HOME

变量值:就是maven软件解压的目录F:\class32\apache-maven-3.3.9

把MAVEN_HOME添加到path里

验证maven是否配置成功:

打开dos窗口 输入: mvn –v

七.Maven仓库

三种仓库

本地仓库 自己维护

本地仓库的配置只需要修改settings.xml文件就可以

远程仓库(私服) 公司维护

中央仓库 maven团队维护 两个亿的jar

三种仓库的关系如下:

八.Maven的目录结构

九.Maven的常用命令

Clean 清理编译的文件

Compile 编译了主目录的文件

Test 编译并运行了test目录的代码

Package 打包

Install 就是把项目发布到本地仓库

Tomcat:run 一键启动

十.Maven的生命周期(了解)

Compile test package install deploy(发布到私服)

三种生命周期

Clean生命周期

Clean

Default生命周期

Compile test package install deploy

Site生命周期

Site

命令和生命周期的阶段的关系

不同的生命周期的命令可以同时执行

Mvn clean package

依赖范围

Compile struts2 框架jar

Provided jsp-api.jar 重点

Runtime 数据库驱动包

Test junit.jar

(compile:默认值,适用于所有阶段(表明该jar包在编译、运行以及测试中路径俊可见),并且会随着项目直接发布。

provided:编译和测试时有效,并且该jar包在运行时由服务器提供。如servlet-api.

runtime:运行时使用,对测试和运行有效。如jdbc.

test:只在测试时使用,在编译和运行时不起作用。发布项目时没有作用。

system:不依赖maven仓库解析,需要提供依赖的显式的置顶jar包路径。对项目的移植来说是不方便的。)

只添加了一个struts2-core依赖,发现项目中出现了很多jar,

这种情况 叫 依赖传递

十一.依赖版本冲突的解决

0.第一声明优先原则

<dependencies>

<!-- spring-beans-4.2.4 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>4.2.4.RELEASE</version>

</dependency>

<!-- spring-beans-3.0.5 -->

<dependency>

<groupId>org.apache.struts</groupId>

<artifactId>struts2-spring-plugin</artifactId>

<version>2.3.24</version>

</dependency>

1.路径近者优先原则

自己添加jar包

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

<version>4.2.4.RELEASE</version>

</dependency>

2.排除原则

<dependency>

<groupId>org.apache.struts</groupId>

<artifactId>struts2-spring-plugin</artifactId>

<version>2.3.24</version>

<exclusions>

<exclusion>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

</exclusion>

</exclusions>

</dependency>

3.版本锁定原则

<properties>

<spring.version>4.2.4.RELEASE</spring.version>

<hibernate.version>5.0.7.Final</hibernate.version>

<struts.version>2.3.24</struts.version>

</properties>

<!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->

<dependencyManagement>

<dependencies>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>${spring.version}</version>

</dependency>

</dependencies>

</dependencyManagement>

  1. 私服 nexus

0.安装nexus

1.启动服务

2.启动失败的解决方法:

登录nexus

用户名/密码 admin/admin123

3.仓库类型

Virtual 虚拟仓库

Proxy 代理仓库

Hosted 宿主仓库 本地仓库

Group 组

需求:

把dao放到私服上,然后service从私服上下载

需求 :将ssh_dao的这个工程打成jar包,并放入到私服上去.

  1. 上传dao

第一步: 需要在客户端即部署dao工程的电脑上配置 maven环境,并修改 settings.xml 文件,配置连接私服的用户和密码 。

此用户名和密码用于私服校验,因为私服需要知道上传都 的账号和密码 是否和私服中的账号和密码 一致。

<server>

<id>releases</id>

<username>admin</username>

<password>admin123</password>

</server>

<server>

<id>snapshots</id>

<username>admin</username>

<password>admin123</password>

</server>

第二步: 配置项目pom.xml

配置私服仓库的地址,本公司的自己的jar包会上传到私服的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库,如果版本为release则上传到私服的release仓库,如果版本为snapshot则上传到私服的snapshot仓库

<distributionManagement>

<repository>

<id>releases</id>

<url>http://localhost:8081/nexus/content/repositories/releases/</url>

</repository>

<snapshotRepository>

<id>snapshots</id>

<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>

</snapshotRepository>

</distributionManagement>

注意:pom.xml这里<id> 和 settings.xml 配置 <id> 对应!

第三步:执行deploy命令发布到私服

  1. 下载dao

第一步 修改settings.xml

<profile>

<!--profile的id-->

<id>dev</id>

<repositories>

<repository>

<!--仓库id,repositories可以配置多个仓库,保证id不重复-->

<id>nexus</id>

<!--仓库地址,即nexus仓库组的地址-->

<url>http://localhost:8081/nexus/content/groups/public/</url>

<!--是否下载releases构件-->

<releases>

<enabled>true</enabled>

</releases>

<!--是否下载snapshots构件-->

<snapshots>

<enabled>true</enabled>

</snapshots>

</repository>

</repositories>

<pluginRepositories>

<!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->

<pluginRepository>

<!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->

<id>public</id>

<name>Public Repositories</name>

<url>http://localhost:8081/nexus/content/groups/public/</url>

</pluginRepository>

</pluginRepositories>

</profile>

<activeProfiles>

<activeProfile>dev</activeProfile>

</activeProfiles>

第二步 删除本地仓库中的dao

第三步 update service工程,出现以下信息说明已经成功

Maven_项目管理工具的更多相关文章

  1. Visual Studio+TFS--强大的项目管理工具

    一.前言 微软的Visual Studio非常强大,可以无缝结合Git或自家的TFS(Team Foundation Server),进行项目管理非常方便,从需求分析.开发.测试.维护,几乎可以贯穿软 ...

  2. linux下一步一步安装禅道项目管理工具

    linux下一步一步安装禅道项目管理工具 因为禅道官网的安装教程实在是太简陋了,所以记录在此. 1.安装apache服务 archlinux下直接 sudo pacman -S apache ubun ...

  3. 15款提高工作效率的 Web 项目管理工具

    在今天的快节奏的商业世界里,能够通过计划.组织.和管理资源池以及评估开发资源的模式来管理一个项目,是一个很艰巨的任务. 有很多现成的项目管理软件来帮助减轻项目管理的负担,并且他们几乎覆盖了所有类型的业 ...

  4. Linux下安装项目管理工具Redmine

    http://www.redmine.org.cn/download Linux下安装项目管理工具Redmine1.Ruby安装Ruby on Rails网站推荐使用1.8.7版. 点击(此处)折叠或 ...

  5. 推荐一款好用的项目管理工具:project

    Microsoft Project (MSP)是微软开发的一个国际上享有盛誉的通用的项目管理工具软件. 在项目管理的时候,这个软件可以帮你定制时间计划,还有其它很多好用的功能. 2010版本的下载传送 ...

  6. EXCEL,熟悉又不熟悉的项目管理工具

    EXCEL,熟悉又不熟悉的项目管理工具 如何利用excel做轻量级的项目管理 教你用Excel进行项目管理

  7. 国内外开源与 SaaS ,团队协作平台、项目管理工具整理

    整理一些开源与 SaaS ,团队协作平台.项目管理工具.还有哪些比较好的工具,可以推荐下? 名称 地址 备注 asana https://asana.com/ 国外 basecamp https:// ...

  8. IT项目管理工具总结(转载)

    以前用过一个cs版的忘记叫啥名了,还用个禅道,感觉一般“5. 测试管理: 项目软件缺陷Bug状态跟踪”在公司内部自己测试或者试用期上线后后期维护阶段用的多,有的公司单独做个系统让用户提问题来修改,也是 ...

  9. Eclipse下安装及配置maven项目管理工具

    ①eclipse下maven插件安装. 本地maven安装.环境变量配置完成后,打开eclipse,点击eclipse菜单栏Help->Eclipse Marketplace搜索关键字maven ...

随机推荐

  1. firefox插件-自动化测试工具-selenium IDE

    教程:http://www.yiibai.com/selenium/selenium_download_ide.html 下载地址:https://addons.mozilla.org/en-US/f ...

  2. DedeCms中Channel用typeid无效

    DedeCms中channel 用typeid调用无法达目的吗?请换成type试试! {dede:channel type='son' typeid='19' row='1'} <a href= ...

  3. php fopen()和file_get_contents() 区别介绍

    本文章向码农们介绍PHP使用fopen与file_get_contents读取文件实例分享及这两个函数的区别,需要的码农可以参考一下. php中读取文件可以使用fopen和file_get_conte ...

  4. java连接数据库驱动代码综合共享

    1.Oracle8/8i/9i数据库(thin模式)Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();S ...

  5. css 两大特性:继承性和层叠性

    css 有两大特性: 继承性和层叠性, 继承性 面向对象语言都会存在继承的概念,在面向对象的语言中,继承的特点:继承了父类的属性和方法.那么我们现在主要研究css,css中没有方法,所以我们仅仅继承属 ...

  6. iframe跨域上传图片

    方案一:用jquery的$.post异步提交,然后把返回来的值用jquery填充到隐藏域中.可是$.post不支持跨域. jQuery.ajax()支持get方式的跨域,这其实是采用jsonp的方式来 ...

  7. 夜色的 cocos2d-x 开发笔记 02

    本章我们让飞机发射子弹,因此我们要写这样一个方法 子弹资源:欢迎下载 很详细的注释吧,现在有几个地方报错,.h文件里面一定要先声明 这里是本章所有的新方法,你可以一次声明全部,嗯,还有个报错应该是我们 ...

  8. VS 打开时默认使用管理员权限

    1. 打开VS的安装目录,找到devenv.exe,右键,选择“兼容性疑难解答”. 2. 选择“疑难解答程序” 3. 选择“该程序需要附加权限” 4. 确认用户帐户控制后,点击测试程序,不然这个对话框 ...

  9. lucene的使用与优化

    1 lucene简介1.1 什么是luceneLucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工 ...

  10. HTML:::before和::after伪元素的用法

    随笔 - 366  文章 - 0  评论 - 392 ::before和::after伪元素的用法   一.介绍 css3为了区分伪类和伪元素,伪元素采用双冒号写法. 常见伪类——:hover,:li ...