Maven最初的目的是在Jakarta Turbine项目中使构建处理简单化。几个项目之间使用到的Ant build文件差异很小,各个JAR都存入CVS。因此希望有一个标准的方法构建各个工程,清晰的定义一个工程的组成,一个容易的方法去发布项目信息并且去提供一种在各个项目之间共享JAR包。
结果出现了一种功能能用于构建和管理任何基于java的工程。Maven小组希望他们已经做到了一些事情,这将有助于Java开发者更容易的完成每天的工作并且有助于理解任何基于java的项目。
Maven的目标是:
-
使构建过程更容易
-
提供统一构建系统
-
提供高质量的项目信息
-
提供开发的最佳实践指南
-
能无缝的加入新的特性
对Maven的错误理解
-
Maven是一个站点和文档制作工具。
-
Maven扩展了Ant,使其能下载到各种依赖包
-
Maven是一系列可重用的Ant脚本
Maven的版本。
Maven现在主要有Maven 1.x和Maven 2.x,其中现在最新版本是Maven 2.02。
Maven 2完成了对Maven 1的重写。重写的首要目的是要提供了强大的Jave构建和包含API的项目,允许Maven被植入任何地方,尤其是高级别的产品如IDEs、质量工具、报告工具等这些。Maven 2构建生命周期的概念正式化,其比Maven更易扩展。
因此现在我们主要研究的就是Maven 2。
Maven的安装
-
Windows 2000/xp下的安装
-
解压缩maven-2.0.2-bin.zip到你希望安装Maven 2.0.2的所在目录。这里假设你选择了C:\ProgramFiles\Apache Software Foundation\maven-2.0.2.
-
将C:\Program Files\Apache Software Foundation\maven-2.0.2\bin目录加入到你的%path%环境变量中。
-
同时,确认JAVA_HOME是否正确设置成功。
-
运行 mvn --version 确认是否安装成功。
显示Maven version: 2.0.2 则表示安装成功。
-
基于Unxi-based的操作系统(Linux,Solaris and Mac OS X)
-
解压缩发布包到你希望安装Maven 2.0.2的所在目录。这里假设你选择了/usr/local/maven-
-
将/usr/local/maven-2.0.2/bin目录加入到你的path环境变量中,例如:PATH=/usr/local/maven-2.0.2y/bin: $PATH。
-
同时,确认JAVA_HOME是否正确设置成功。
-
运行 mvn --version 确认是否安装成功。
显示Maven version: 2.0.2 则表示安装成功。
Maven主要功能列表
Maven是一种对项目的管理工具,它提供了一种方式来管理以下项目中涉及到的工作内容,同时以下也是Maven的主要功能:
-
构建项目(Builds)
-
文档编制(Documentation)
-
报告(Reporting)
-
依赖管理(Dependencies)
-
配置管理(SCMs)
-
发布管理(Releases)
构建项目
-
首先创建一个Maven工程
Maven可用于构建java应用工程和java web应用工程。
-
-
WebApp
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp
-DarchetypeArtifactId=maven-archetype-webapp
my-webapp
|-- pom.xml
`-- src
`-- main
|-- webapp
| |-- WEB-INF
| | `-- web.xml
| `--index.jsp
`-- resources
其他的目录则需要自己补充。
其pom.xml文件内容如下:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-webapp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>Maven Webapp Archetype</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>my-webapp</finalName>
</build>
</project>
|
-
-
App
mvn archetype:create -DgroupId=com.mycompany.ap -DartifactId=my-app
命令正确执行后,生成如下目录:
my-app
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
其pom.xml文件内容如下:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.ap</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Maven Quick Start Archetype</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
|
-
Maven项目的标准目录介绍
Maven提倡使用一个共同的标准目录结构,使开发人员能在熟悉了一个Maven工程后,对其他的Maven工程也能清晰了解。这样做也省去了很多设置的麻烦。
以下的文档介绍是Maven希望的目录结构,并且也是目录创建工程是采用的目录结构。Maven推荐大家尽可能的遵守这样的目录结构。
src/main/java
|
Application/Library sources
|
src/main/resources
|
Application/Library resources
|
src/main/filters
|
Resource filter files
|
src/main/assembly
|
Assembly descriptors
|
src/main/config
|
Configuration files
|
src/main/webapps
|
Web application sources
|
src/test/java
|
Test sources
|
src/test/resources
|
Test resources
|
src/test/filters
|
Test resource filter files
|
src/site
|
Site
|
LICENSE.txt
|
Project's license
|
README.txt
|
Project's readme
|
在顶级目录上是工程的描述文件pom.xml(如果使用Ant则还包括其他属性文件,maven.xml或build.xml),另外还包括提供给最终用户的文件,如,README.txt, LICENSE.txt等等。
顶级目录还包括两个子目录:src,target。顶级目录下可能出现的其他目录仅仅是CVS或.svn和其他多模块工程的工程目录,最好不要再有其他目录。
Target目录是所有工程编译构建的输出目录。
Src目录包含所有工程的源码文件,配置文件,资源文件等等。它下面的子目录一般包含main(主要的工程源文件),test(测试文件),site(项目站点文件)。
-
项目构建的生命周期的介绍
Maven 2是围绕着构建生命周期概念设计的。这意味着,构建或者发布的过程已经被清晰的定义了。
当我们使用Maven构建工程时,我们只需要了解几个Maven定义好的命令即可,其他的工作则交给POM来完成。
以下给出Maven提供的构建生命周期列表:
validate
|
validate the project is correct and all necessary information is available.
|
generate-sources
|
generate any source code for inclusion in compilation.
|
process-sources
|
process the source code, for example to filter any values.
|
generate-resources
|
generate resources for inclusion in the package.
|
process-resources
|
copy and process the resources into the destination directory, ready for packaging.
|
compile
|
compile the source code of the project.
|
process-classes
|
post-process the generated files from compilation, for example to do bytecode enhancement on Java classes.
|
generate-test-sources
|
generate any test source code for inclusion in compilation.
|
process-test-sources
|
process the test source code, for example to filter any values.
|
generate-test-resources
|
create resources for testing.
|
process-test-resources
|
copy and process the resources into the test destination directory.
|
test-compile
|
compile the test source code into the test destination directory
|
test
|
run tests using a suitable unit testing framework. These tests should not require the code be packaged or deployed.
|
package
|
take the compiled code and package it in its distributable format, such as a JAR.
|
pre-integration-test
|
perform actions required before integration tests are executed. This may involve things such as setting up the required environment.
|
integration-test
|
process and deploy the package if necessary into an environment where integration tests can be run.
|
post-integration-test
|
perform actions required after integration tests have been executed. This may including cleaning up the environment.
|
verify
|
run any checks to verify the package is valid and meets quality criteria.
|
install
|
install the package into the local repository, for use as a dependency in other projects locally.
|
deploy
|
done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.
|
因此,当我们构建一个项目时,只需要了解自己希望做什么,然后执行以
分享到:
相关推荐
1.1.maven简介 1.2.maven的作用 1.3.maven的安装 2.项目案例 2.1.构建项目 2.2.项目拆分 3.聚合和继承 3.1.聚合 3.2.继承 4.maven高级特性 4.1.属性配置 4.2.版本管理 4.3.资源管理 5.私服 5.1.nexus安装 5.2.仓库的...
**Maven简介** Maven是Java开发中的一个项目管理和综合工具,由Apache软件基金会开发。它的核心理念是通过提供一个标准化的构建过程,简化项目的构建、依赖管理和文档生成。Maven通过XML格式的配置文件(pom.xml)...
maven简介及基础教程和实用案例分析及特点阐述.rarmaven简介及基础教程和实用案例分析及特点阐述.rarmaven简介及基础教程和实用案例分析及特点阐述.rarmaven简介及基础教程和实用案例分析及特点阐述.rarmaven简介及...
【标题】:“Maven简介” Maven,一个在Java开发领域广泛应用的项目管理和综合工具,由Jason van Zyl于2001年创立。它的核心理念是通过约定优于配置的原则,帮助开发者规范项目的构建过程,使得项目的构建、依赖...
Maven是一个广泛使用的Java项目管理和构建自动化工具,它基于项目对象模型(POM)的概念,能够管理项目的生命周期,包括编译、测试、打包、发布等。Maven使得开发者可以更加专注于代码的编写,而不是繁琐的构建过程...
**Maven简介** Maven是Apache软件基金会开发的一个项目管理工具,它基于项目对象模型(Project Object Model,POM),通过使用预定义的构建生命周期和依赖管理系统,可以自动化构建过程。Maven的出现,替代了传统的...
#### Maven简介与安装步骤 **Maven**是一款由Apache组织提供的项目管理和构建工具,它能帮助开发者更好地管理项目的构建、依赖关系等。Maven的强大之处在于它提供了统一的标准流程,使开发人员能够快速地理解和操作...
**Maven简介** Maven是Apache软件基金会开发的项目管理工具,它通过一个项目对象模型(Project Object Model,POM)来管理和构建Java项目。POM是一个XML文件,包含了项目的配置信息,如依赖、构建目标、插件等。通过...
#### Maven简介 Maven是一款强大的自动化构建工具,主要用于Java项目的构建、依赖管理和项目信息管理。它通过一系列标准的过程来管理项目的生命周期,从而简化了项目的构建过程。本文将详细介绍Maven的安装配置、...
#### Maven简介 Maven是Apache软件基金会组织下的一个开源项目,它是一种基于项目对象模型(Project Object Model,POM)的构建工具,主要用于Java项目的构建、依赖管理和项目信息管理。通过一系列标准化的生命周期...
1. **Maven简介** Maven是Apache软件基金会开发的开源项目,它的核心目标是简化Java项目的构建过程。通过使用约定优于配置的原则,Maven可以自动处理大部分构建任务,如编译、测试、打包、部署等,极大地提高了开发...
1. **Maven简介**: Maven是Apache软件基金会开发的一个项目管理工具,它通过一个统一的方式来管理项目的构建、报告和文档。Maven基于项目对象模型(Project Object Model, POM),可以自动化处理项目的构建过程。 ...
Maven简介** Maven是由Apache软件基金会开发的一个项目管理工具,它基于项目对象模型(Project Object Model,POM)的理念,通过XML文件来描述项目信息、构建配置和依赖关系。Maven可以自动下载项目所需的依赖库,...
**一、 Maven简介** 1. **作用**:Maven统一了构建过程,通过插件系统执行编译、测试、打包、部署等任务。它还自动解决项目依赖关系,避免手动管理jar文件的繁琐工作。 2. **基于约定优于配置**:Maven有一套默认...
#### 一、Maven简介 Maven是Apache下的一个开源项目,它是一种项目管理和理解工具。通过一个中心信息管理的方式,Maven能够管理项目的构建、报告和文档。Maven使用描述性的XML文件来管理项目的构建、依赖关系和其他...
#### Maven简介与特点 Maven是一款强大的项目管理和构建工具,作为Apache基金会下的一个开源项目,它完全采用Java语言编写,主要用于管理Java项目。Maven通过标准化项目构建过程和依赖管理,极大地简化了Java项目的...
1. Maven简介:Maven的核心理念是“约定优于配置”,它通过默认的构建生命周期和插件,使得构建过程标准化。Maven使用项目对象模型(Project Object Model,POM)来描述项目,并自动管理项目的构建、报告和文档生成...
#### Maven 简介与特点 Maven 是一款强大的项目管理和构建工具,主要用于 Java 项目的管理。Maven 提供了统一的标准流程来管理项目的生命周期、依赖关系以及项目信息等,极大地提高了开发效率并简化了构建过程。 -...
#### Maven简介 Maven是一款由Apache软件基金会提供的开源项目管理工具,主要用于Java项目的构建、依赖管理和项目信息管理。它基于项目对象模型(POM),通过一系列标准化的任务来帮助开发者更容易地构建项目。 ###...