maven原理,几行代码读懂maven

程序写多了,感觉要描述的事情只有通过代码才能恰当表达。。。凭自己理解写的,若有谬误请指正。 当然下面这个也是代码不是伪码,方便表达而已无需纠结

//maven的所有插件统一继承自一个接口,至少有如下能力
interface mavenPlugin{
   //执行业务
   doSomeThing();
   

   //该插件绑定的phase阶段(phase的含义后述)
   getbindedPhase();

  goalName();
}

 

//maven的主程序
class mavenExecutor(){
      //maven执行时,预先定义了一个顺序规则,如果你想到达package,则必须
     //先经过validtate和compile. 重要的事再说一次,这个是maven预定义的规则,不能变的,你只需理解这个规则
     rule: "validate"<"compile"<"package"<"install"

     //看作是maven运行时的入口
     run(String goal){
          mavenPlugin plugin=findPlugin(goal) //容后说明
          goalPhase = plugin.getbindedPhase; //比如这一步得到的是 install
          phaseList = calPhase(goalPhase,rule); //接上步,这步结果是[validate,compile,package,install]

          //如上,想要执行后面的,必须要依次按规则直到到达
          for(phase tempPhase: PhaseList){
               mavenplugin jobPlugin = findBindedPluginByPhase(tempPhase);
               jobPlugin.doSomeThing();
          }
}
}

phase:阶段,用来描述和分界项目构建过程中的阶段,比如编译阶段,打包阶段。
一连串的相关的阶段连在一起,构成生命周期lifecycle(通常描述成一个生命周期包含若干个阶段);
原理上你可以将任何一个插件绑定到任何阶段上。
maven自带的常用插件都默认已经绑定在了恰当生命周期的恰当阶段上。比如maven-compile-plugin的phase是Default Lifecycle的compile

lifecycle: maven目前定义三个生命周期。生命周期可以"并行", 但其自身不能有多个。
1.Clean Lifecycle 在进行真正的构建之前进行一些清理工作。 >=3个phase
2.Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。 几十个phase,是maven的核心
3.Site Lifecycle 生成项目报告,站点,发布站点。>=3个phase

maven的命令: 通过制定运行目标来完成。 这些目标可以关联到一个具体的maven插件。
比如目标clean: 这个来自maven-clean-plugin.

 

posted on 2015-09-14 10:09  benzero  阅读(158)  评论(0)    收藏  举报