maven指南(原创)

             目录

 

 

Maven 指南

Java软件工程中maven是强大的构建工具,实际上,你也可以利用其它语言构建软件工程,但是maven是在java基础上研发的,因此在历史上更多的用在java项目中

指南的目的是让你更加理解maven工作,因此这个指南的焦点是maven核心的概念,一旦你理解了核心的概念,将会更加容易的查找在maven文档的细节,或者在网络中搜索

实际上,maven开发者声明maven不单是个构建工具,你可以在那些maven的哲学中阅读他们知道这是什么,但是现在,只要任务它是个构建工具,你可以找到什么是真正的maven,一旦你理解了它和开始用它。

这个指南基于maven3.0.5

Maven的网址是 http://maven.apache.org

通过这个网站你可以下载最新的maven版本和跟随的大概的项目

什么是构建工具?

一个构建工具是一个使任何牵涉到软件工程的东西自动化,建立一个典型的软件工程包含一个或多个一些步骤

1 生成源代码(如果要在项目中自动生成代码)

2 通过源代码生成文档

3 编译源代码

4 打包源代码成为jar包和zip

5 打成包在服务器上,仓库中或者别的地方

任何一个软件工程可能有比这更多的步骤来完成一个软件,这些步骤可以是正常的嵌入到构建工具中,因此这些步骤也可以是自动化的

自动化构建步骤的优势是比手动创建软件更小的减少错误,而且,一个自动化的构建工具比人为的的构建要快

安装maven

在你自己的电脑系统中安装maven,需要去maven下载页面和跟着里面的说明,总之,你需要做的是

1 下载并且解压maven

2 设置M2_HOME 在环境变量中指明你解压的maven目录

3 设置m2环境变量指明M2_HOME/bin(%M2_HOME%\bin windows,$M2_HOME/binunix系统中)

4 增加path环境变量参数(%M2% windows,$M2unix)

5 打开命令确认窗口和类型’mvn’(没有空格)和按下enter

在写下’mvn’命令后你可以能够看到在命令确认窗口有写着maven 错误,不要着急那个错误,它期望,你没有给maven创建过POM文件,但是实际上你给的maven错误的意思是你的maven现在已经安装好了

注意:maven需要通过java来执行,因此你需要安装java,maven需要java1.5版本或者更新的

 

Maven概述 核心概念

Maven的核心围绕着POM(项目对象模型)文件的概念,一个POM文件是xml表述项目资源,像源码,测试码,依赖(额外的jars的利用)等,POM包含了所用这些资源的引用,POM文件可以放在它所在的项目文件的根目录中.

这里是一个图标,它表示maven是如何用POM文件的,POM文件的主要组成

<!--[endif]-->

这些概念简明的解释了给你的概述,接下来的指南就是更加详细的部分

Pom文件

当你根据你给的pom文件给maven执行命令的时候,maven将会在pom的资源描述中执行命令

建立生命周期,阶段和目标

Maven建立流程可以分割成建立声明周期,阶段和目标。一个建立的周期是有一系列的阶段组成,任何一个建立的阶段是有一系列的目标组成。当你通过命令给maven运行maven时候,这个命令是构建生命周期,阶段或者目标的名字,如果生命周期是请求执行,所有的阶段在生命周期中都会执行,如果构建阶段请求执行,所有的阶段在构建阶段的预定义序列之前执行

依赖和仓库

Maven执行的第一个检查你的项目所需要的依赖,依赖是你的项目用到的额外的jar文件(java类库),如果依赖在本地的参考中找不到,maven会去中心maven仓库下载然后把他们放在本地仓库中,本地仓库只是你的文件硬盘的一个目录,你可以找到如果你精确想要知道本地仓库在哪里,你也可以明确哪个远程的仓库利用来下载依赖,所有这些可以在接下来的指南中详细解释

构建插件

构建插件是用来给构建阶段添加额外的目标,如果你想要执行你的没有被覆盖的标准的maven构建阶段和目标设置一个动作。你可以给POM文件添加一个插件,maven有很多你可以用的标准的插件,如果你响应你也可以执行在java中实现

 

构建配置文件

构建文件用在你想要通过不通的方式建立工程,比如,你需要在你本地电脑上构建你的工程,为了开发和测试,和你需要构建它为了部署你的开发环境,2个构建可能是不同的,为了不同的构建你需要添加不同的配置文件为你的POM.当你执行maven你会告诉什么配置文件来使用

Maven ant

Ant是通过apache创建的另一个流行的构建工具,如果你过去用过ant并且你想要尝试学习maven,你会注意到2个不同工程的不同点

Ant 利用了命令式的方法,意味着你精确的在ant构建文件什么动作ant想要利用,你可以制定地登记的动作比如复制文件编译源代码等,你指明动作,你可以指明一系列的你想要试试的,ant没有默认的目录布局

Maven用了更多的是声明的方法,意味着你指明什么去建立在mavenpom文件中,但是现在如何建立它,pom文件描述了你的项目的资源,不是如何去建立它,相反的,ant文件描述了如何去建立你的项目,maven文件中,如何去创建你的项目在maven构建生命周期,阶段和目标中预定义.

Maven POM文件

一个maven POM 文件(项目对象模板)是一个xml文件描述了项目的资源,这个包含了源码的目录,测试源码等的位置,你的项目拥有的额外的依赖包等

Pom 文件描述了要构建什么,但是通常不是如何去建立,如何去建立相对于maven构建阶段和目标,你可以添加习惯的动作在你的maven构建语法中如果你想要的话,尽管,任何一个项目有一个pom文件,pom文件的名字叫pom.xml,可以放在你的项目的根目录,你的任何一个分成多个子项目代表性的有一个pom文件为了它的父项目,一个文件为任何一个子项目,这些构建应许这2个项目构建在同一个步骤中,或者任何一个子项目分别的建立

通过这个部分我会描述POM文件的重点,为了引用整个pom文件,看maven pom引用

这里是最小的pom文件

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

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.jenkov</groupId>

    <artifactId>java-web-crawler</artifactId>

    <version>1.0.0</version>

</project>
 

Modelversion 元素设置你用的pom模板的版本,利用这个匹配你在用的maven的版本,version 4.40匹配maven版本2和3

groupId 元素是组织的唯一的ID,或者一个项目(一个开源的项目一个实例),

大多数你想要利用groupID 更加与java包的根目录名字,例如,我的java web carwler项目我可以选择group Id com.jenkov,如果项目是个开源的项目有很多依赖的参与者,可能它会带来更多的感觉去用group id 关系到这个项目二部是group id关系到我的公司,比如可以用com.javawebcrawler

Group id 不包含java包的名字,不需要用到.符号(圆点符号),去给id分割单词,但是,如果你想要这么做,项目位于Maven存储库组ID相匹配的目录结构,各自的.号会被目录分隔符代替,各自的单词会代表一个录,group ID  com.jenkov放在一个目录叫做MAVEN_REPO/com/jenkov.,MAVEN_REPO 目录名字的步伐将被maven仓库的path代替

artifactId 元素包含你建立的项目的名字,至于我的java web crawler项目,这个artifact id会是java-web-crawler,这个artifact id 会用来做为我的子目录的名字在我的groupid目录下载maven仓库中,当你创建项目时artifact id也可以做为jar文件产生的一部分,构建的输出流程,构建的结构是可以叫做artifactmaven中,大多数的jar,war,ear文件,但是也可以做为其他

versionId 元素包含了项目的版本号,如果你的项目在不同的版本发布,例如,一个开源的api,对版本构建是有用的,这种方式你的项目的利用者可以参考指明的版本在你的项目中,版本号用来作为子目录的名字在artifact id目录下,版本号也可以用来做为artifact的一部分

以上的groupId ,artifactId和版本元素导致了jar包的建立和放在本地的maven仓库根据下列的path(目录和文件名)

MAVEN_REPO/com/jenkov/java-web-crawler/1.0.0/java-web-crawler-1.0.0.jar

如果你的项目用来用了maven目录结构,你的项目有额外的依赖,然后以上最小的pom文件构建你的项目所需要的

如果你的项目没有标准的目录结构,有额外的依赖,或者需要特殊的动作在构建的时候,你可以需要添加更多的元素在pom文件中,这些元素可以通过maven pom参考列表参考

通常,你可以指明pom文件的所有的东西,那些东西用来给关于如何创建你的项目的maven文件更多的细节,参考maven pom引用为了更多的信息关于如何可以指明

父类的POM

所有的maven文件继承与super pom ,如果没有指明super pom,这个文件继承最基层的pom,这个是图形列表

<!--[if gte vml 1]><v:shape id="图片_x0020_5" o:spid="_x0000_i1026" type="#_x0000_t75" alt="Super POM and POM inheritance." style='width:243pt; height:225pt;visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\WB-ZHU~1\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png" o:title="Super POM and POM inheritance"/> </v:shape><![endif]--><!--[if !vml]-->Super POM and POM inheritance.<!--[endif]-->
你可以构建pom文件明确的继承另外的pom文件,那个方法你可以改变配置跨越继承的pom文件凭借他们共同的super pom.  你可以明确的父类的pom文件就像下面

<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">
    <modelVersion>4.0.0</modelVersion>
        <parent>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>my-parent</artifactId>
        <version>2.0</version>
        <relativePath>../my-parent</relativePath>
        </parent>
    <artifactId>my-project</artifactId>
    ...
</project>

继承的父类文件覆盖了父类文件的配置,只是明确了新的配置继承了pom文件

Pom 继承也可以覆盖更多的细节在maven pom参考中

有效的pom

根据所有的pom继承,它可能难理解最终的总的pom文件,maven执行的时候是什么样子最终的pom文件(继承所有的结果)叫做有效的pom,你可以获得maven通过命令显示最终的pom文件

mvn help:effective-pom

命令会在命令行输出有效的文件

Mavan配置文件

Maven2个配置文件,在配置的文件中你可以配置maven跨越所有的mavenpom文件例如,你可以配置

 参考的地址

积极构建配置文件等配置文件叫做setting.xml2个文件放在

Maven安装目录    $M2_HOME/conf/settings.xml

用户主目录        ${user.home}/.m2/settings.xml

2个文件是可选的,如果2个文件都有,用户home的值覆盖了maven安装目录的值

你可以在maven setting引用到获得更多的setting文件

运行 maven

当你安装maven的时候,你可以建立pom文件,然后把pom文件放在项目的根目录,你可以在你的项目中运行maven

根据命令提示执行mvn命令运行maven,当你只需mvn命令的时候你通过建立生命周期,阶段可目标,maven然后执行,这里是个例子

mvn install

构建阶段执行叫做安装(默认构建声明周期的一部分),建立了工程和复制了jar包放在本地的maven仓库中,实际上,这个命令执行了所有的阶段在install构建命令序列,在执行install之前建立阶段

你可以执行重复的建立生命周期和阶段通过传递更加多的参数给mvn命令

下面是个列子

mvn clean install

这个命令首先执行了clean在构建声明周期的时候,移除了编译的class来自maven输出目录,然后执行了install阶段

你可以执行maven goal(构建阶段的子部分)通过构建阶段和目标名字串级a在:之间,作为maven的参数,这里有列子

mvn dependency:copy-dependencies

这个命令执行了dependency 构建阶段的目标copy-dependencies

Maven目录结构

Maven有标准的目录结构,如果你想要为你的项目跟从那个目录结构,你不需要在你的源码,测试码等文件中明确目录在你的pom文件

参考maven标准目录布局链接你可以看到所有的文件目录的布局

这里是最重要的目录

src
  - main
    - java
    - resources
    - webapp
  - test
    - java
    - resources
 
- target

Src目录是你的源码和测试码的根目录,main目录是你的源码设计到应用的不包含测试码的目录,test目录包含了测试源码,java目录在maintest目录应用(main)和为测试的java(在测试目录下)

Resources目录包含了你的项目的其他资源,这个目录包含了属性文件国际化应用等还有其他

Webapp目录包含了你的javaweb应用,如果你的项目是web应用吗,webapp目录会作为web应用的根目录,因此webapp目录包含了WEB-INF目录等

Target 目录是通过maven创建的,包含了所有编译好的classjar文件等,通过maven产生,当执行clean构建阶段,target目录会清空

 

工程依赖

除非你的项目很小,你的项目需要额外的java api或者框架在你的jar包中打包,这些jar包需要在classpath中当你需要编译你的项目码的时候

保持你的项目最新和这些额外的jar文件可以是普遍的任务,任何一个jar可以再一次需要另外一些额外jar文件等,当你的项目很大你想要更多的依赖的时候,特别难处理循环下载所有的额外的依赖然后确保正确的版本下载号。幸运的是,maven可以建立依赖管理系统,在你的pom文件中指明额外的依赖的库,什么版本,然后maven为你下载把他们放在本地仓库中,如果任何一个库需要更多的库,然后这些其他库会下载到你的本地仓库中

你明确你的项目依赖在dependencies元素在POM文件,这是例子

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">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.jenkov.crawler</groupId>
    <artifactId>java-web-crawler</artifactId>
    <version>1.0.0</version>
        <dependencies>
        <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.7.1</version>
        </dependency>
        <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.1</version>
        <scope>test</scope>
        </dependency>
        </dependencies>
    <build>
    </build>
</project>

注意dependencies元素,在它里面有2dependency元素,任何一个dependency元素描述额外的dependency

任何一个dependency描述通过他的groupId,artifactIdversion,你可以想到这是就是如何可以辨别的你自己的项目在pom开始的时候,上面的列子需要org.jsoup group’s jsoup artifact在版本1.7.1junit group’sjunit artifact 在版本4.8.1

当你的pom文件通过maven执行,2个依赖将会下载来自中心仓库并且放在本地仓库中,如果你的依赖们在你的本地仓库中有找到,maven不会下载他们,只要依赖的找不到的情况下,会把依赖的下载到本地仓库中

 

有时候给的依赖在中心仓库不可利用的,你可以自己下载依赖把他放在本地仓库中,想放在子目录结构去匹配groupId,artifactIdversion代替所有的(.)/和分割groupId,artifactIdversion/,然后你有了你的子目录结构

2个依赖下载通过下面的列子放在下面的子目录中

MAVEN_REPOSITORY_ROOT/junit/junit/4.8.1
MAVEN_REPOSITORY_ROOT/org/jsoup/jsoup/1.7.1

额外的依赖

maven中的额外的依赖(JAR文件),不是放在maven仓库(也不是本地,中心仓库和远程仓库),它可以放在你硬盘上的任何一个地方,例如,在你的webapplib目录还有其他地方,单词额外的意识是额外的给maven仓库系统,不只是额外的项目,大多数的依赖是给项目额外的,但是有少数是额外的仓库系统(不在仓库中)

你可以配置依赖像下面

<dependency>
  <groupId>mydependency</groupId>
  <artifactId>mydependency</artifactId>
  <scope>system</scope>
  <version>1.0</version>
  <systemPath>${basedir}\war\WEB-INF\lib\mydependency.jar</systemPath>
</dependency>    

 

Groupid artifactId2个设置依赖的名字,api使用的名字,意思是,scope元素的值设置成系统,这个systempath元素是设置指向jar包包含的依赖的路径,${basedir}指向的目录是任何一个pom创建的目录的绝对的剩余的

快照依赖

快照依赖是依赖(jar文件)这些文件在开发模式下,代替了马上更新系统的版本号去获得最新的版本,你可以依靠为了创建,快照版本总是下载到本地,参考及时匹配的快照版本已经放在了本地仓库,总是下载快照版本确保你可以获得最新的本地仓库,为了每个建立,

你可以告诉maven你的项目是一个快照版本,通过附加-SNAPSHOT给版本号码在POM最初的开始(你可以设置groupIDartifactId),这些是一个版本元素例子<version>1.0-SNAPSHOT</version>

注意-SNAPSHOT附加在版本的号码上

依赖快照版本可以完成通过附加-SNAPSHOT在版本号码的后面当配置依赖时候,这些是一个例子

<dependency>
    <groupId>com.jenkov</groupId>
    <artifactId>java-web-crawler</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

the –SNAPSHOT 附加给版本号码告诉maven这是个快照版本

你可以配置多长时间一次下载快照对应的依赖在maven settings文件中

Maven仓库

Maven仓库是额外的元数据的jar包的目录,元数据是pom文件描述这个项目的打包的jar文件,包含了额外的依赖任何一个打包的jar,它是y元数据使maven能够下载依赖的递归,知道整个依赖树下载好放置在你的本地仓库中。

Maven仓库覆盖了更多的细节,详细maven介绍仓库,但是这有个快读概述

Maven仓库有3个特征

本地仓库

中心仓库

远程仓库

Maven搜索这些仓库依赖在上面的序列中,首先在本地仓库,然后在中心仓库,第三在远程仓库如果在POM指明

这是个图标在三个仓库类型和其他位置

<!--[if gte vml 1]><v:shape id="图片_x0020_6" o:spid="_x0000_i1025" type="#_x0000_t75" alt="Maven Repository Types and Location." style='width:394.5pt; height:243.75pt;visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\WB-ZHU~1\AppData\Local\Temp\msohtmlclip1\01\clip_image004.png" o:title="Maven Repository Types and Location"/> </v:shape><![endif]--><!--[if !vml]-->Maven Repository Types and Location.<!--[endif]-->

本地仓库

本地仓库的目录是开发者的电脑,这个仓库会包含所有的maven下载的依赖,同样的maven仓库是在任何一个项目中典型的利用,就像maven只是用来下载依赖一样,即使是重复的项目依赖他们(junit)

你拥有的项目可以建立和安装在你的本地仓库中,利用mvn install命令,你可以用你的其他项目利用打包成jar包在你拥有的项目中额外的依赖通过明确他们做额外的依赖在你的MAVEN pom文件中

通过默认的maven给你的本地仓库放在你的userhome目录下载你的电脑上,然而

你可以改变本地仓库的目录通过设置目录在maven settings文件中,你的maven setting文件可以放在你的user-home/.m2 目录叫做settings.xml,这是你如何明确另一个你的本地仓库的地址

<settings>
    <localRepository>
        d:\data\java\products\maven\repository
    </localRepository>
</settings>

中心仓库

中心仓库是maven协会提供,通过默认的maven在中心仓库为了任何依赖需要,但是不在你的本地仓库中,maven可以下载这些依赖在本地仓库中,你需要补明确配置去给中心仓库

远程仓库

远程仓库是通常放在web服务器上maven可以下载依赖一个仓库,相比中心仓库。远程仓库可以放在网络上的任何地方或者在本地网络中。

远程仓库通常用在主项目网络给你的组织,通过重复的项目分享,例如,共同的安全的项目可能用来跨重复的网络工程,这个安全的项目应该不需要跨越到外面的世界,然后就是可以不需要在公共的主机中列入,中心仓库,代替可以主持在网络远程仓库中

依赖们在远程仓库中可以下载然后通过maven放在本地仓库中

你可以配置远程仓库在pom文件中,放在xml元素中刚放在<dependencies>元素后面

<repositories>
   <repository>
       <id>jenkov.code</id>
       <url>http://maven.jenkov.com/maven2/lib</url>
   </repository>
</repositories>

Mavan构建生命周期,阶段和目标

maven构建了个软件工程项目在生命周期中,构建生命周期分配给构建阶段构建阶段分配给建立目标,maven构建生命周期,建立阶段和目标描述更多的细节在maven instroduction to buile phases,但是这里我会给更快的概要

建立生命周期

Maven3个建立的声明周期,这里是

1 default

2 clean

3 site

任何一个建立生命周期照顾了不同的建立软件工程的方面,因此,任何一个建立生命周期会立即互相依赖执行执行,你可以获得maven去执行更多的生命周期,但是你可以在序列中执行,在任何一个中分离,你可以执行2个不同的maven命令默认的生命周期把所有的涉及到的编译和打包你的项目,clean生命周期着手任何事情涉及到从输出目录移除临时文件,包含生成源文件,编译文件,先前jar文件等,site生命周期着手任何涉及到的为你的项目生成文档,实际上,site可以利用你的项目完成web站点和文档

建立阶段

任何一个构建的生命周期分成不同的构建阶段,构建再一次分成目标,因此,总的构建的流程是一系列的构建声明周期,构建阶段和目标。

你可以执行整个生命周期如clean或者site,一个构建阶段像安装时默认的构建生命周期的步伐,或者构建目标像dependency:copy-dependencies.注意:你不能执行默认的生命周期的目录,你可以指明构建阶段或者目录在默认的生命周期中,

当你执行构建阶段的时候,所有的构建阶段在构建在标准的构建系列执行之前,因此

执行install构建阶段意思是执行所有的构建阶段在install构建,然后执行install构建之后

Default 生命周期是最有兴趣的什么构建代码,自从你不能直接的执行默认的生命周期,你可以执行构建阶段或者目标来自默认的生命周期,默认的生命周期是扩展的一些列的构建和目标,因此我可以不描述所有的

 

最公共的利用构建语法是

Build Phase

Description

validate

Validates that the project is correct and all necessary information is available. This also makes sure the dependencies are downloaded.

compile

Compiles the source code of the project.

test

Runs the tests against the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed.

package

Packs the compiled code in its distributable format, such as a JAR.

install

Install the package into the local repository, for use as a dependency in other projects locally.

deploy

Copies the final package to the remote repository for sharing with other developers and projects.

你执行所有的构建语法通过他的名字用mvn命令,这是例子子

mvn package

这个例子子的执行packages构建阶段,因此所有的构建在maven预定义之前

如果标准的maven构建和目录不只是构建你的工程,你可以创建maven插件添加构建功能你需要的

构建目标

构建目标是在maven构建过程中最好的时刻,一个目标可以一定给一个或者多个构建阶段或者没有,如果目标不一定给任何一个构建阶段,你可以执行通过目标的名字mvn命令,如果目标一定是重复的构建阶段,你的目标通过不同的构建阶段直接获得执行

Maven 构建配置文件

Maven构建配置文件使你能够利用不通的配置去构建你的项目,代替创建不通的pom文件,你可以在不通的构建配置中指明配置文件,当你需要的时候

你可以用你的配置文件建立你的工程,你可以读取所有关于构建配置文件在maven pom引用的故事,这里我可以告诉你快速的概要

 

Maven构建配置文件在pom文件中指明,在profiles元素中,任何一个构建配置文件内部都有个profie元素,这是个例子

<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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.jenkov.crawler</groupId>
  <artifactId>java-web-crawler</artifactId>
  <version>1.0.0</version>
  <profiles>
      <profile>
          <id>test</id>
          <activation>...</activation>
          <build>...</build>
          <modules>...</modules>
          <repositories>...</repositories>
          <pluginRepositories>...</pluginRepositories>
          <dependencies>...</dependencies>
          <reporting>...</reporting>
          <dependencyManagement>...</dependencyManagement>
          <distributionManagement>...</distributionManagement>
      </profile>
  </profiles>
</project>

在构建配置文件时候,一个构建配置文件的描述改变可以制作成pom文件档执行这个可以改变应用的配置文件的使用,元素们在配置文件的内部会覆盖所有元素的值,用相同的名字深入的在pom文件中

profile元素你可以看到一个activation元素,这个元素描述了你的触发器构建文件的使用,一个方法是选择你的配置文件将要被执行在settings.xml文件中,这里你可以设置你的激活的配置文件,另一个方法是添加-p profile-namemaven命令行

给配置文档更多的信息

Maven 插件

Maven插件使你能够添加你自己的动作去构建流程,你可以通过创建简单的java类扩展明确的maven类,然后为你的项目创建pom,这个插件可以放在你的项目中为了让指南简单,我会参考maven plugin developer center更多的信息关于开发插件

猜你喜欢

转载自zhizhi555555.iteye.com/blog/2213958