`
hzh0725
  • 浏览: 82374 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Maven(2.0.9) 运行过程

    博客分类:
  • java
阅读更多

Maven的运行理念:

maven提供了一个平台,plugins能被这个平台所管理和利用,通过这些plugin根据平台所提供的项目信息来管理项目。(项目信息来源pom文件).

 maven 默认情况对项目定义了3个项目管理周期

  1. default
  2. clean
  3. site

 具体描述,大家可以在%M2_HOME%/lib/maven-2.0.9-uber.jar!/META-INF/plexus/components.xml

 <lifecycle>
            <id>default</id>
            <phases>
              <phase>validate</phase>
              <phase>initialize</phase>
              <phase>generate-sources</phase>
              <phase>process-sources</phase>
              <phase>generate-resources</phase>
              <phase>process-resources</phase>
              <phase>compile</phase>
              <phase>process-classes</phase>
              <phase>generate-test-sources</phase>
              <phase>process-test-sources</phase>
              <phase>generate-test-resources</phase>
              <phase>process-test-resources</phase>
              <phase>test-compile</phase>
              <phase>process-test-classes</phase>
              <phase>test</phase>
              <phase>package</phase>
              <phase>pre-integration-test</phase>
              <phase>integration-test</phase>
              <phase>post-integration-test</phase>
              <phase>verify</phase>
              <phase>install</phase>
              <phase>deploy</phase>
            </phases>
          </lifecycle>
          <lifecycle>
            <id>clean</id>
            <phases>
              <phase>pre-clean</phase>
              <phase>clean</phase>
              <phase>post-clean</phase>
            </phases>
            <default-phases>
              <clean>org.apache.maven.plugins:maven-clean-plugin:clean</clean>
            </default-phases>
          </lifecycle>
          <lifecycle>
            <id>site</id>
            <phases>
              <phase>pre-site</phase>
              <phase>site</phase>
              <phase>post-site</phase>
              <phase>site-deploy</phase>
            </phases>
            <default-phases>
              <site>org.apache.maven.plugins:maven-site-plugin:site</site>
              <site-deploy>org.apache.maven.plugins:maven-site-plugin:deploy</site-deploy>
            </default-phases>
          </lifecycle>

 每个phase绑定一些goal,这些goal就是在plugins中定义的。

Maven从命令行中运行有两种方式

  1. mvn 某一个phase
  2. mvn 某一个goal

当然可以是一组phase,或者一组goal,设置可以是一组phase和一组goal一起执行

 

 Maven 运行一个phase

运行过程:

  • 根据phase找到具体的lifecyle,并找到该lifecyle中该phase以前的所有phase集合并包括本身的phase
  • 根据这些phase集合,绑定每个phase中plugins的goals集合,一些phase中邦定的goal是系统指定的,比如针对jar的项目
<lifecycle>
            <id>default</id>
            <phases>
              <process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
              <compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
              <process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
              <test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
              <test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
              <package>org.apache.maven.plugins:maven-jar-plugin:jar</package>
              <install>org.apache.maven.plugins:maven-install-plugin:install</install>
              <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
            </phases>
          </lifecycle>

 

  •  用户也可以在相关的phase中指定自己的goal,在pom文件描述比如:
<build>
    <plugins>
        <plugin>***</plugin>
		<executions>
          <execution>**</execution>
		</executions>
	</plugins>
</build>

 

  •  这些goal运行都是一个线程,而且都是使用自己的classloader,都是maven平台的classloader的child.

 

Maven 运行一个goal

效果跟运行一个phase差不多,不过就是只是运行一个goal而已,当然我们也可以指定这个goal运行时,必须运

行其他的goal或者运行一个phase,这就是牵涉到maven-plugin开发

 

Maven plugins开发

maven plugins开发模式类似javadoc的annoation,当然如果你够猛,也可以直接写plugin.xml,因为这个东西是在

runtime过程中真正被maven用到的,不过maven可以根据plugin的annoation生产plugin.xml

 

每一个goal就是AbstractMojo的子类

他有以下annoation

@goal: 名称

@phase: 说明这个goal绑定的phase,当然这个是可以override

@execute goal="othergoal" 说明运行这个goal的时候,必须先运行othergoal

@execute phase="**" 说明运行这个goal的时候,必须先运行指定的phase

@execute lifecyle="**" phase="**" 跟上面差不多,不过这个phase在指定的lifecyle里面,lifecyle除了其他定义的,我们也可以定义自己的

 

 

分享到:
评论

相关推荐

    maven2.0.9在myeclipse6.5下的配置及资源下载

    6. **运行Maven任务**:现在你可以通过刚刚配置的外部工具来运行Maven命令,或者在MyEclipse的右键菜单中选择`Run As` -&gt; `Maven Build`,然后输入你要执行的命令。 注意,由于Maven 2.0.9版本相对较旧,可能不支持...

    apache-maven-2.0.9.zip

    4. **lib** 目录:包含了Maven运行所需的库文件,包括各种依赖的JAR包,如plexus容器、插件API和其他必需的库。 5. **plugins** 目录:虽然在Maven 2中,插件并不直接放在这个目录下,但这个目录可能包含了默认的...

    maven 2.0.9

    ** Maven 2.0.9 入门指南 ** Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它通过提供一套标准化的构建过程,使得开发者可以更方便地管理项目的依赖关系、构建流程以及资源文件。Maven 2.0.9 是 Maven...

    maven2.0.9

    在Maven 2.0.9中,POM的解析和处理能力得到了增强,使得开发者能够更精确地控制项目的构建过程。 1. **依赖管理**:Maven 2.0.9能自动解决项目间的依赖关系,通过中央仓库下载所需库文件,极大地减少了手动管理jar...

    apache-maven-2.0.9

    通过POM,Maven可以自动下载所需的库文件,处理构建过程中的各种任务,如编译源代码、运行测试、生成文档等。 在JAVA WEB 开发中,Maven 提供了对Servlet、JSP、EJB等Web组件的支持。开发者可以通过声明相应的插件...

    Maven2.09+ 入门指南

    3. **构建项目**:通过运行`mvn clean compile`命令,Maven会清理旧的构建产物,然后编译源代码。 4. **测试项目**:使用`mvn test`执行单元测试,并生成测试报告。 5. **打包项目**:`mvn package`命令会将编译后...

    maven

    Maven 2.0.9版本虽然已经较为陈旧,但它奠定了后来版本的基础,对于理解和学习Maven的原理及工作方式仍然具有很高的价值。随着Maven的不断迭代,现在的最新版本提供了更多的功能和优化,但其核心理念和基本操作依然...

    maven-definitive-guide

    - **第2章:安装并运行Maven** - Java环境验证:确保用户已经正确安装了Java环境。 - Maven下载:提供Maven的官方下载链接。 - Maven安装指南:详细介绍如何在不同操作系统上安装Maven,包括Mac OS X、Microsoft ...

    maven-2[1].0.9新版

    Maven 2.0.9是较早的版本,尽管现在已经有更新的版本,如Maven 3.x,但理解早期版本对于了解Maven的发展历程至关重要。 ** Maven 的核心概念 ** 1. **项目对象模型(Project Object Model, POM)**:POM是Maven的...

    maven-error-diagnostics-2.0.9.jar

    java运行依赖jar包

    maven-toolchain-2.0.9.jar

    java运行依赖jar包

    maven简单实用教程

    Maven 2.0.9版本与之前的Maven 1.x有很大的不同,它简化了项目构建过程,提供了更强大的依赖管理和项目信息管理。Maven通过使用标准化的目录结构和约定优于配置的原则,使得项目构建更加高效和一致。 2. Maven资源...

    maven内存溢出解决放啊

    Maven version: 2.0.9 Java version: 1.6.0_07 OS name: "windows 2003" version: "5.2" arch: "x86" Family: "windows" ``` ##### 3.2 Linux环境 在Linux系统中,可以采用设置环境变量的方式来调整Maven的内存...

    maven-settings-2.0.9.jar

    java运行依赖jar包

    maven-profile-2.0.9.jar

    java运行依赖jar包

    maven-monitor-2.0.9.jar

    java运行依赖jar包

    maven-invoker-2.0.9.jar

    java运行依赖jar包

    maven-core-2.0.9.jar

    java运行依赖jar包

    maven 简单使用教程

    Maven的最新版本为2.0.9,但需要注意的是,Maven2与早期的Maven1在很多方面存在显著差异,因此在查阅第三方文档时需明确区分这两个版本。 1. Maven资源: - Maven官方网站:获取最新版本、文档和社区支持。 - The...

    maven安装.txt

    Maven version: 2.0.9 Java version: 1.5.0_15 OS name: windows2000 OS version: 5.0 OS arch: x86 OS family: windows ``` #### 常用命令 1. **创建项目骨架:** - 使用 `mvn archetype:create` 命令...

Global site tag (gtag.js) - Google Analytics