文档章节

Apache Maven --- [简易入门]

moonsnake777
 moonsnake777
发布于 2016/05/06 19:11
字数 2117
阅读 108
收藏 6

Apache Maven 是一个软件项目管理和理解工具.它基于POM(project object model,项目对象模型),它可以从一个中央信息来管理项目的构建,报告和文档.

Introduction:

    Maven,在犹太语中的意思是知识仓库,最初开始是为了简化Jakarta Turbine项目的构建过程.有一些被CVS管理的并拥有各自有些微差异的Ant构建文件和JAR的项目.我们想要有个标准的项目构建方法,清晰的项目组成定义,简单的项目信息发布方式以及共享JAR包的途径.

    结果是一个我们可以用来构建和管理JAVA项目的工具.我们希望它可以使JAVA开发人员的日常工作更加简单,并且为任何JAVA项目的理解提供普遍性的帮助.

    Maven的主要目标是允许开发人员在最短的时间内理解开发工作的完整状态.为了达到这一目标,这里有一些令人担心的问题需要处理:

        1.简化构建过程

        2.提供一个统一的构建系统

        3.提供优质的项目信息

        4.提供最优部署实践的指导方案

        5.允许透明的迁移到新特性

    你可能听说过关于Maven的下面一些内容:

        1.它是站点和文档工具

        2.它扩展Ant并让你下载依赖

        3.它是可复用Ant脚本的集合

    尽管Maven做这些事,但是这些并不是Maven仅有的特性,而且这些和Maven的主旨有很大的不同.

    我们应当了解到有些项目可能因为其历史原因没办法符合要求.尽管Maven本身的设计足够灵活,但是在这些情况下针对不同项目的不同需要,它仍然没法迎合除非能够做些折中的处理.

    如果你决定使用Maven,并且有着不能重组的不同寻常的构建结构,你可能不得不放弃它的一些功能或者完全放弃使用Maven

Feature:

    1.通过最佳的实践来简单的安装项目-用几秒钟的时间创建一个项目

    2.在所有项目中使用一致的方式,意味着不需要加大开发人员进入项目的时间

    3.出众的依赖管理包括自动更新,依赖闭包(也叫作依赖传递)

    4.可以轻易地同时处理多个项目

    5.一个庞大且不断成长的仓库,储存了大量开源项目实时可用的最新版本的框架库.

    6.可扩展的,可以轻松编写JAVA或脚本语言的插件

    7.只需要少量配置就可以即时访问新特性

    8.在Maven外部为依赖管理和部署提供Ant任务

    9.基于模型的构建:在大多数情况下,Maven有能力构建任意多的项目到预定义的输出类型如:JAR,WAR,或基于项目元数据的分布,而不需要任何脚本

    10.项目信息的相关站点:在构建过程中使用相同的元数据,Maven可以生成一个包含任何你添加的文档信息的Web站点或者PDF,并将项目的开发状态添加到标准报告中

    11.发布管理和分发出版:不需要太多额外的配置,Maven将集成你的代码控制系统(如:CVS)并且基于一个标签来管理项目的发布.它也可以发布项目到分布位置以供其他项目使用.Maven有能力发布一个独立的输出如:一个JAR,一个包含其他依赖和文档的存档或者作为一个分布源

    12.依赖管理:Maven鼓励中央库的JAR和其他的依赖.Maven伴随着一个机制:项目客户端可以通过从一个中央库下载所需的JAR来构建你的项目.这允许了Maven用户来重用项目之间的JAR并且鼓励了项目之间的沟通来确保向下兼容问题处理

给出原文:

    1.Simple project setup that follows best practices - get a new project or module started in seconds
    2.Consistent usage across all projects means no ramp up time for new developers coming onto a project
    3.Superior dependency management including automatic updating, dependency closures (also known as transitive dependencies)
    4.Able to easily work with multiple projects at the same time
    5.A large and growing repository of libraries and metadata to use out of the box, and arrangements in place with the largest Open Source projects for real-time availability of their latest releases
    6.Extensible, with the ability to easily write plugins in Java or scripting languages
    7.Instant access to new features with little or no extra configuration
    8.Ant tasks for dependency management and deployment outside of Maven
    9.Model based builds: Maven is able to build any number of projects into predefined output types such as a JAR, WAR, or distribution based on metadata about the project, without the need to do any scripting in most cases.
    10.Coherent site of project information: Using the same metadata as for the build process, Maven is able to generate a web site or PDF including any documentation you care to add, and adds to that standard reports about the state of development of the project. Examples of this information can be seen at the bottom of the left-hand navigation of this site under the "Project Information" and "Project Reports" submenus.
    11.Release management and distribution publication: Without much additional configuration, Maven will integrate with your source control system such as CVS and manage the release of a project based on a certain tag. It can also publish this to a distribution location for use by other projects. Maven is able to publish individual outputs such as a JAR, an archive including other dependencies and documentation, or as a source distribution.
    12.Dependency management: Maven encourages the use of a central repository of JARs and other dependencies. Maven comes with a mechanism that your project's clients can use to download any JARs required for building your project from a central JAR repository much like Perl's CPAN. This allows users of Maven to reuse JARs across projects and encourages communication between projects to ensure that backward compatibility issues are dealt with.

FAQ:http://maven.apache.org/general.html

Download:https://maven.apache.org/download.cgi

Install:

    1.确保已经搭建了可运行的JAVA环境

    2.解压下载包

    3.配置Maven环境变量(PATH添加MAVEN_HOME\bin)

    4.运行命令mvn -v来检测安装是否成功

Configure:

    Maven自身使用和构建项目使用的配置分布在以下几个地方

        1.MAVEN_OPTS 环境变量:这个变量包含了用来启动JVM运行Maven的参数和可以额外添加给Maven的全局选项.

        2.setting.xml 文件:位于USER_HOME/.m2目录下的这个配置文件用来包含供Maven在所有项目中使用的通用配置.

        3..mvn 文件夹:位于项目的顶层文件夹,maven.config和extensions.xml包含了项目指定的用来运行Maven的配置.

Run:

    Maven的运行语法:mvn [options] [<goal(s)>] [<phase(s)>]

    使用mvn -h来获取所有可用的选项

    使用Maven生命周期阶段来构建项目的一个典型调用:mvn package

    生命周期的构建以及各个阶段:

        1.clean:pre-clean, clean, post-clean

        2.default:validate, initialize, generate-sources, process-sources, generate-resources, process-resources,         compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources,                        process-test-resources, test-compile, process-test-classes, test, prepare-package, package,                                 pre-integration-test,integration-test, post-integration-test, verify, install, deploy

        3.site:pre-site, site, post-site, site-deploy

    重新构建一个项目生成所有打包输出和文档站点并部署到仓库管理器可以通过下面的命令执行:

        mvn clean deploy site-deploy

    仅仅创建包并安装到本地仓库以供其他项目可以来复用,执行如下命令:

        mvn clean install(这也是maven项目中最常用的构建方式)

    当并不是和一个项目一起工作,在其他的一些用例中,你可能只是想要调用一个指定的任务(所谓的目标插件),如下执行:

        mvn archetype:generate || mvn checkstyle:check

IDE Integration:

    所有的JAVA平台的流行开发环境都支持对Maven众多开箱即用的特性,下面按字母排序给出一些流行IDE:

        1.Eclipse IDE - M2Eclipse(它是官方正式的Eclipse项目,用来将Maven整合进Eclipse)

            特性如下:

                在Eclipse中启动Maven构建

                基于pom.xml的依赖关系管理

                从Eclipse工作空间解决Maven依赖而不需要安装到本地Maven仓库

                自动从远程Maven仓库下载依赖

                为新建Maven项目,pom.xml提供向导,并且为现有的项目提供可Maven化支持

                在远程Maven仓库快速搜索依赖

                在Java编辑器中通过使用类名或包名查找依赖Jar来快速修复

                和其他Eclipse工具整合,如:WTP,AJDT,Mylyn,Subclipse等

        2.JetBrains IntelliJ IDEA(略)

        3.Netbeans IDE(略)

© 著作权归作者所有

moonsnake777
粉丝 2
博文 32
码字总数 50045
作品 0
私信 提问
generallycloud/baseio

BaseIO Project BaseIO是基于java nio/aio开发的一款可快速构建网络通讯项目的异步IO框架,其以简单易用的API和优良的性能深受开发者喜爱。 项目特色 轻松实现断线重连(轻松实现心跳机制) 简...

generallycloud
2017/01/09
0
0
Apache Maven 入门篇

Apache Maven 入门篇 ( 上 ) http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-1-406235-zhs.html Apache Maven 入门篇(下) http://www.oracle.com/techn......

吴海宏
2014/10/21
117
0
[Maven-不忘初心,方得始终] Maven-项目管理与构建

Maven课程概述: Maven快速入门 Maven核心知识 Maven建立web项目 1. Maven快速入门 Maven介绍及环境搭建: Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档...

LSantorini
2016/02/14
154
0
Maven 入门引导

weblog 里有很多精彩的文章,大部分都是关于某项技术的个人解释和感想,这样是很好,也是 blog 文章的主要方式,其实还有一种很好的方式就是告送后来人,你的学习历程,比如:你是怎么学习一...

青夜之衫
2017/12/08
0
0
互联网创业,哪些开源项目可以用?

JEECG 社区开源项目下载(总览) 反馈问题板块:http://www.jeecg.org/forum.php?mod=forumdisplay&fid=153 资源1: JEECG 微云快速开发平台( JEECG 3.6.5 云插件开发版) 最新版本:发布时间 ...

Jeecg
2016/08/31
313
0

没有更多内容

加载失败,请刷新页面

加载更多

cpu load过高问题排查

load average的概念 top命令中load average显示的是最近1分钟、5分钟和15分钟的系统平均负载。 系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程...

mskk
54分钟前
6
0
用spring boot 实现websocket

import java.io.IOException;import javax.websocket.OnClose;import javax.websocket.OnError;import javax.websocket.OnMessage;import javax.websocket.OnOpen;import java......

jingshishengxu
今天
4
0
shell介绍,命令历史,命令补全和别名,通配符,输入输出重定向,管道符和作业控制

shell介绍 可以使用 yum list |grep zsh 或者 yum list |grep ksh 这样可以搜索 zsh 和 ksh ,有需要的话可以安装 总之,默认使用的就是 .bash shell 命令历史 输入过的命令会被保存在一个文...

doomcat
今天
7
0
1995年的资深工程师,和你谈谈如何进阶

1995年的资深工程师,和你谈谈如何进阶 自我介绍 网络ID:杭城小刘,城市:顾名思义,人在杭州。1995年出生,本科毕业,现在是一名 iOS 资深工程师,年薪 35w。兴趣爱好广泛:乒乓球、美食、...

杭城小刘
今天
10
0
Kafka 面试题

1.Kafka中的ISR、AR代表什么? ISR:与leader保持同步的follower集合 AR:分区的所有副本 2.Kafka中的HW、LEO分别代表什么? LEO:每个副本的最后条消息的offset HW:一个分区中所有副本最小...

djm猿
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部