`

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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics