编程开发 购物 网址 游戏 小说 歌词 快照 开发 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 编程 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
移动开发 架构设计 编程语言 互联网 开发经验 Web前端 开发总结
开发杂谈 系统运维 研发管理 数据库 云 计 算 Java开发
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
  编程开发知识库 -> 开发经验 -> 原 Java Web开发入门 - 第4章 Maven -> 正文阅读
 

[开发经验]原 Java Web开发入门 - 第4章 Maven[第1页]


#Maven
[Maven官网](http://maven.apache.org/)    
[Maven下载](http://maven.apache.org/download.cgi)
Maven[安装](http://maven.apache.org/install.html)与[配置](http://maven.apache.org/configure.html)
#Maven安装
Ubuntu安装
```
sudo apt-get install maven
```
CentOS安装
```
yum install maven
```
Mac OS X安装
```
brew insall maven3
```
二进制安装
#Maven实战
##Maven核心概念

##人肉式
* 手动编译
* 手动打war包
* 手动复制war包运行

##IDE
###eclipse
* 下载依赖包:去哪里下载
* 编写源代码、配置文件 目录结构怎么定
* 编译、测试、打包、发行 构建流程不统一
* 项目代码共享以及依赖
* 各种依赖的版本管理
* 远程部署问题
##Maven是什么
* Apache基金会出品
* 开源
* Java编写
通常把Maven理解成项目构建和依赖管理工具

##为什么是Maven
* 约定(惯例)优先原则
* 三方依赖管理 - 提供远程仓库,解决了依赖维护
* 提供一致的项目构建管理方式 - 减少构建工作量
* 插件式架构,大量的可重用插件
* 方便集成IDE
* 开源项目使用Maven

##Maven安装
* 依赖JDK,保证Java已经安装
* [Maven官网](http://maven.apache.org/)
* 配置环境变量
* * M2_HOME=/path/to/maven/root
* * PATH=$PATH:$M2_HOME/bin
* 国内镜像
由于[OSC镜像库停止服务](http://www.oschina.net/news/75946/maven-oschina-closed),从Maven课程说明得知,可以使用[Aliyun镜像库](http://maven.aliyun.com/nexus/)

##pom.xml
* groupId 组织
* artifactId 项目
* version 版本    

上面三个称为Maven项目的唯一标示
* packaging 打包类型
* dependencies 依赖项目

```
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

<!-- groupId 组织,使用java包式描述 -->
    <groupId>groupId</groupId>
<!-- artifactId 项目标识符(不要使用标点) -->
    <artifactId>TomcatStudy</artifactId>
<!-- 版本号SNAPSHOT会替换时间戳快照,发布 -->
    <version>1.0-SNAPSHOT</version>
<!-- 打包类型war或者jar -->
    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
<!-- 存在编译需要而发布不需要的jar包,可以用scope标签,值设为provided -->
<scope>provided</scope>
        </dependency>
    </dependencies>
</project>
```
##Maven基本命令
* mvn archetype:generate - 使用模板生成项目
* mvn compile 编译源代码
* mvn test 跑单元测试
* mvn package 打包应用
* mvn deploy 部署
* mvn site生成项目相关的文档站点
* mvn clean 清理
* mvn install 把包安装到本地仓库

##Maven Tomcat插件
* Tomcat官方提供的一个Maven插件,用于方便应用和tomcat的开发运行调试
* 详细帮助
* * mvn help:describe -Dplugin=tomcat7
* 常见命令
* * mvn tomcat7:run 启动一个嵌入式的tomcat实例(在maven中)
* * mvn tomcat:deploy
* *mvn tomcat:undeploy

#Maven Tomcat实践演示

TODO






#Maven FAQ
Q: 我执行tomcat7插件相关的操作时,怎么一直报错,提示找不到tomcat7插件?    
A: 这个是因为tomcat7插件的groupId不在maven默认的pluginGroups中,解决方法有一下几种:    
1. 在一个配置了tomcat7插件的项目目录下执行,因为配置了tomcat7插件,所有maven就知道了其groupId,所以就能够找到了    
2. 使用带groupId的全限定名,例子如下:
      mvn help:describe -Dplugin=org.apache.tomcat.maven:tomcat7-maven-plugin:2.2
   由于在指定plugin的时候,写了完整的groupId,所以这样也是可以的    
3. 修改一下mvn的配置文件settings.xml, 在<pluginGroups> 这个配置项下面,增加一个<pluginGroup>配置即可
       <pluginGroups>
                  <pluginGroup>org.apache.tomcat.maven</pluginGroup>
       </pluginGroups>

想了解更多为什么会这样,请参考
http://maven.apache.org/guides/introduction/introduction-to-plugin-prefix-mapping.html



Q: 我在实战maven管理多项目的时候,执行mvn tomcat7:run 报了错误,错误信息是“The POM for com.netease.restaurant:Kitchen:jar:1.0.0-SNAPSHOT is missing, no dependency information available”,怎么办?    

A: 在多项目管理实战中的这个例子中,Restaurant对Kitchen有依赖,如果你直接在Restaurant这个项目中执行 mvn tomcat7:run的话,由于此时Kitchen还没有放到本地仓库中,因此Restaurant找不到这个Kitchen的依赖,所以报错了。解决方案如下:    
1.可以在Kitchen这个项目中执行 mvn install,此时会把这个Kitchen项目安装maven的本地仓库,然后再在Restaurant项目中引用,就能找到了    
2.直接在顶层的 restaurant-parent 这个项目下先执行 mvn install,这样的话,顶层的这个父项目会把所有的子项目都安装到本地仓库,并维护好依赖关系

? 著作权归作者所有
分类: 字数:1046
分享到:
粉丝: 30 博客数: 77 共码了 42524 字
  开发经验 最新文章
Java 9 中的 GC 调优基础
Java9之HttpClientAPI实战详解
TeamFlowy——结合Teambition与Workflowy
深度思考Spark Runtime机制
jQuery实现放大镜效果
疯狂Spring Cloud连载(六)——负载均衡框
JavaWeb学习总结——JavaMail发送邮件
GZIP压缩解压类
git常用命令
appach 和tomcat 之间的关系(1)
上一篇文章      下一篇文章      查看所有文章
加:2016-08-23 23:01:48  更:2016-08-23 23:01:59 
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 新闻资讯 小游戏 Chinese Culture 股票 三丰软件 开发 中国文化 网文精选 阅读网 看图 日历 万年历 2018年10日历
2018-10-19 0:02:05
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程开发知识库