`

Maven 入门

阅读更多

Ø  一个简单的Maven项目。

Maven Help 插件有四个目标。前三个目标是—— active-profiles, effective-pom

effective-settings —— 描述一个特定的项目,它们必须在项目的目录下运行。 最后

一个目标—— describe ——相对比较复杂,展示某个插件或者插件目标的相关信息。

 

§  help:active-profiles         列出当前构建中活动的Profile(项目的,用户的,全局的)。

§  help:effective-pom        显示当前构建的实际POM,包含活动的Profile

§  help:effective-settings  打印出项目的实际settings, 包括从全局的settings和用户级别settings继承的

配置。

§  help:describe                    描述插件的属性。它不需要在项目目录下运行。但是你必须提供你想要描述插件

groupId artifactId

 

下面的命令使用 help 插件的 describe 目标来输出Maven Help 插件的信息。

mvn help:describe -Dplugin=help

mvn help:describe -Dplugin=help -Dfull

mvn help:effective-pom

 

 

Ø  创建一个简单的MAVEN项目

Create:

mvn archetype:generate \

  -DarchetypeGroupId=org.apache.maven.archetypes \

  -DgroupId=com.mycompany.app \

  -DartifactId=my-app

BuildMaven会把我们项目的构件安装到本地仓库:

$ mvn install

 

C:\Project\GC_source_CVS_R1.1\simple>mvn install

[INFO] Scanning for projects...

[INFO]

[INFO] ------------------------------------------------------------------------

[INFO] Building simple 1.0-SNAPSHOT

[INFO] ------------------------------------------------------------------------

[INFO]

[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ simple ---

[INFO] Using 'UTF-8' encoding to copy filtered resources.

[INFO] skip non existing resourceDirectory C:\Project\GC_source_CVS_R1.1\simple\src\main\resources

[INFO]

[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ simple ---

[INFO] Compiling 1 source file to C:\Project\GC_source_CVS_R1.1\simple\target\classes

[INFO]

[INFO] --- maven-resources-plugin:2.4.3:testResources (default-testResources) @ simple ---

[INFO] Using 'UTF-8' encoding to copy filtered resources.

[INFO] skip non existing resourceDirectory C:\Project\GC_source_CVS_R1.1\simple\src\test\resources

[INFO]

[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ simple ---

[INFO] Compiling 1 source file to C:\Project\GC_source_CVS_R1.1\simple\target\test-classes

[INFO]

[INFO] --- maven-surefire-plugin:2.7.2:test (default-test) @ simple ---

[INFO] Surefire report directory: C:\Project\GC_source_CVS_R1.1\simple\target\surefire-reports

-------------------------------------------------------

 T E S T S

-------------------------------------------------------

Running com.AppTest

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 sec

 

Results :

 

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

 

[INFO]

[INFO] --- maven-jar-plugin:2.3.1:jar (default-jar) @ simple ---

[INFO] Building jar: C:\Project\GC_source_CVS_R1.1\simple\target\simple-1.0-SNAPSHOT.jar

[INFO]

[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ simple ---

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 18.860s

[INFO] Finished at: Wed May 09 15:58:18 CST 2012

[INFO] Final Memory: 9M/22M

[INFO] ------------------------------------------------------------------------

C:\Project\GC_source_CVS_R1.1\simple>java -cp target/simple-1.0-SNAPSHOT.jar com.App

Hello World!

 

 

pom.xml 文件

Maven项目的坐标(coordinate)

§  groupId

d 团体,公司,小组,组织,项目,或者其它团体。团体标识的约定是,它以创建这个项目的组织名称的逆向域名(reverse domain name)开头。

§  artifactId

groupId下的表示一个单独项目的唯一标识符。

§  version

一个项目的特定版本。发布的项目有一个固定的版本标识来指向该项目的某一个特定的版本。而正在开发中的项目可以用一个特殊的标识,这种标识给版本加上一个“SNAPSHOT”的标记。

§  packaging

项目的类型,默认是jar,描述了项目打包后的输出。类型为jar的项目产生一个JAR文件,类型为war的项目产生一个web应用。

 

Maven项目的坐标(coordinate)

§  groupId

d 团体,公司,小组,组织,项目,或者其它团体。团体标识的约定是,它以创建这个项目的组织名称的逆向域名(reverse domain name)开头。

§  artifactId

groupId下的表示一个单独项目的唯一标识符。

§  version

一个项目的特定版本。发布的项目有一个固定的版本标识来指向该项目的某一个特定的版本。而正在开发中的项目可以用一个特殊的标识,这种标识给版本加上一个“SNAPSHOT”的标记。

§  packaging

项目的类型,默认是jar,描述了项目打包后的输出。类型为jar的项目产生一个JAR文件,类型为war的项目产生一个web应用。

 

Maven项目的坐标(coordinate)

§  groupId

d 团体,公司,小组,组织,项目,或者其它团体。团体标识的约定是,它以创建这个项目的组织名称的逆向域名(reverse domain name)开头。

§  artifactId

groupId下的表示一个单独项目的唯一标识符。

§  version

一个项目的特定版本。发布的项目有一个固定的版本标识来指向该项目的某一个特定的版本。而正在开发中的项目可以用一个特殊的标识,这种标识给版本加上一个“SNAPSHOT”的标记。

§  packaging

项目的类型,默认是jar,描述了项目打包后的输出。类型为jar的项目产生一个JAR文件,类型为war的项目产生一个web应用。

 

<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">

 

Maven项目的坐标(coordinate)

§  groupId

d 团体,公司,小组,组织,项目,或者其它团体。团体标识的约定是,它以创建这个项目的组织名称的逆向域名(reverse domain name)开头。

§  artifactId

groupId下的表示一个单独项目的唯一标识符。

§  version

一个项目的特定版本。发布的项目有一个固定的版本标识来指向该项目的某一个特定的版本。而正在开发中的项目可以用一个特殊的标识,这种标识给版本加上一个“SNAPSHOT”的标记。

§  packaging

项目的类型,默认是jar,描述了项目打包后的输出。类型为jar的项目产生一个JAR文件,类型为war的项目产生一个web应用。

  <modelVersion>4.0.0</modelVersion>

 

  <groupId>com.ch03</groupId>

  <artifactId>simple</artifactId>

  <version>1.0-SNAPSHOT</version>

  <packaging>jar</packaging>

 

  <name>simple</name>

  <url>http://maven.apache.org</url>

 

  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  </properties>

 

  <dependencies>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>3.8.1</version>

      <scope>test</scope>

    </dependency>

  </dependencies>

</project>

 

仓库的根目录

/<groupId>/<artifactId>/<version>/<artifactId>-<version>.<packaging>

 

Ø  Maven插件和目标 (Plugins and Goals)

 

当提到一个插件目标的时候,我们常常用速记符号:pluginId:goalId

例如,当提到Archetype插件的generate目标的时候,我们写

archetype:generate

 

Ø  Maven生命周期 (Lifecycle) Lifecycle Reference

Clean Lifecycle

pre-clean

executes processes needed prior to the actual project cleaning

 

clean

remove all files generated by the previous build

clean:clean

post-clean

executes processes needed to finalize the project cleaning

 

Default Lifecycle

validate

validate the project is correct and all necessary information is available.

 

initialize

initialize build state, e.g. set properties or create directories.

 

generate-sources

generate any source code for inclusion in compilation.

ear:generateApplicationXml

process-sources

process the source code, for example to filter any values.

resources:resources

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.

compiler:compile

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.

resources:testResources

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

compiler:testCompile

process-test-classes

post-process the generated files from test compilation, for example to do bytecode enhancement on Java classes. For Maven 2.0.5 and above.

 

test

run tests using a suitable unit testing framework. These tests should not require the code be packaged or deployed.

surefire:test

prepare-package

perform any operations necessary to prepare a package before the actual packaging. This often results in an unpacked, processed version of the package. (Maven 2.1 and above)

 

package

take the compiled code and package it in its distributable format, such as a JAR.

ejb:ejb or ejb3:ejb3 or jar:jar or par:par or rar:rar or war:war

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.

install:install

deploy

done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.

deploy:deploy

Site Lifecycle

pre-site

executes processes needed prior to the actual project site generation

 

site

generates the project's site documentation

site:site

post-site

executes processes needed to finalize the site generation, and to prepare for site deployment

 

site-deploy

deploys the generated site documentation to the specified web server

site:deploy

 

分享到:
评论

相关推荐

    maven入门到精通

    maven入门到精通 用 Maven 做项目管理 在 Java世界中我们很多的开发人员选择用 Ant来构建项目,一个 build.xml能够完成编译、测试、打包、部署等很多任务,但我们也碰到了很多的问题,如 jar文件管理混乱,各个...

    Maven入门到精通

    **Maven入门到精通** Maven,一个强大的Java项目管理工具,由Apache软件基金会开发,旨在简化构建过程,提供统一的构建系统,并通过依赖管理和项目信息管理,帮助开发者更高效地构建、测试和部署Java应用。它通过...

    Apache Maven入门篇(上)

    在“Apache Maven入门篇(上)”中,我们将探讨Maven的基本概念、安装步骤以及如何创建和管理一个简单的Java项目。 1. Maven的核心概念: - **POM(Project Object Model)**:POM是Maven项目的核心,是一个XML文件...

    maven入门.docx

    ### Maven 入门详解 #### 一、Maven 概述与重要性 Maven 是一个流行的项目管理和整合工具,广泛应用于 Java 开发领域。它为开发者提供了完整的构建生命周期框架,帮助开发者简化项目的构建过程,使得项目的管理和...

    HIbernate+Maven入门demo

    **Hibernate+Maven入门demo详解** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是底层的SQL语句。Maven则是一个项目管理工具,它管理...

    Maven入门指南.docx

    【Maven入门指南】 Maven是一个广泛应用于Java项目的强大构建工具,它自动化处理软件构建的多个环节,包括源码编译、文档生成、JAR包创建、依赖管理和部署。Maven的核心理念是通过项目对象模型(Project Object ...

    J2EE JNDI配置原理详解 JBOSS安装配置 Maven入门 Ant使用入门

    1.13 Maven入门--概念与实例 1.14 Subversion 1.15 jar war ear区别 1.16 如何在Eclipse中调试JBoss应用 1.17 JBoss 5.0 安装与配置详解 1.18 JBOSS安装配置 1.19 Oracle,MySql,SQL server分页 1.20 Jboss...

    Maven入门--较复杂的实例

    【标题】"Maven入门--较复杂的实例"指的是在IT领域中学习并实践Apache Maven的基础知识,特别是通过一个相对复杂的项目来理解其工作原理和应用。Maven是一个强大的项目管理和综合工具,它可以帮助Java开发者自动化...

    Maven入门案例

    本篇文章将深入探讨Maven的入门知识,包括Maven的安装、配置、基本命令以及通过案例来理解Maven的工作原理。 首先,让我们从**Maven的安装**开始。在Windows系统中,你可以访问Maven官方网站下载最新版本的Maven,...

    maven入门整合SpringMVC登录+调用天气接口实例

    **maven入门** Maven是Java开发中的一个项目管理和构建工具,它简化了构建过程,通过定义项目的构建配置,管理依赖关系,自动化构建任务。在本项目中,Maven被用来整合SpringMVC和实现接口调用。Maven的POM...

    Maven 入门指南.docx

    ### Maven 入门指南知识点详解 #### 一、Maven 的基本概念 Maven 是一款强大的项目管理和构建工具,它的核心理念是通过标准化项目构建流程,实现自动化构建和依赖管理,进而提高软件项目的可维护性和生产力。Maven...

    HAP框架-Maven入门手册.zip

    结合提供的资源“HAP框架-Maven入门手册.zip”,我们可以深入探讨Maven与HAP框架的基本概念、使用方法以及它们在实际开发中的应用。 1. Maven简介: Maven是由Apache软件基金会开发的项目管理工具,它以XML格式的...

    技术部Maven入门培训.rar

    ** Maven入门培训 ** Maven,作为Java项目管理和构建的工具,是开发人员不可或缺的利器。它通过统一的构建过程,简化了项目的构建、依赖管理以及文档生成等任务,极大地提高了开发效率。以下是对Maven的基本概念、...

    maven 入门笔记配套示例代码

    本压缩包包含了"Maven入门笔记"的配套示例代码,主要帮助初学者理解Maven的基本用法和概念。 在"Maven入门笔记"中,你可能会学到以下关键知识点: 1. **Maven架构**:Maven基于项目对象模型(Project Object Model...

    maven 入门demo

    ** Maven 入门指南 ** Maven 是一个强大的项目管理和构建工具,广泛应用于Java开发领域。它通过标准化项目构建过程,使得开发人员可以更轻松地管理依赖、构建、测试和部署项目。本教程将引导初学者了解 Maven 的...

    maven入门,java项目管理,值得珍藏

    ### Maven入门教程:Java项目管理的关键工具 #### 一、Maven简介与重要性 Maven 是一个跨平台的项目管理和综合工具,主要用于Java项目的构建、依赖管理和项目信息管理。它通过提供一种清晰的项目对象模型(POM),...

Global site tag (gtag.js) - Google Analytics