您的位置:首页 > 其它

Maven项目构建管理过程的自动流水线

2015-10-27 08:47 435 查看
    对于包的管理,对比于之前.NET项目中的Nuget,在java版的itoo中使用的是Maven,然而,对于Maven的了解,我们的使用也仅限于冰山一角,准确的说Maven是一个跨平台的项目管理工具,而不是一个包管理工具。就像java不仅是一种编程语言,还是一个平台,maven也一样,它不仅是一种构建工具,更是一种项目依赖管理和项目信息管理工具,它提供了一个中央仓库,能帮助我们自动下载我们需要的构件。
    关于如何安装和配置Maven,我们上一篇博客已经详细介绍了,本篇博客我们介绍Maven中两个重要的xml文件。
在整个Maven的配置和使用过程中我经常打交道的两个文件就是settings.xml文件和pom.xml文件,其中settings.xml文件对于maven来说相当于全局的配置,用于所有的项目。在我们的压缩包中有两个settings.xml文件,在conf目录下的settings.xml文件是全局配置,用户自定义的settings.xml文件配置放在了maven目录下。
    下面我们分析一下settings.xml文件中的配置:
<localRepository>D:\maven\repository</localRepository>//设置本地仓库的位置
<interactiveMode>true</interactiveMode> //设置maven是否需要和用户交互活的输入
<offline>false</offline>  //设置maven是否需要在离线模式下运行
<servers>
         <server>
               <id>releases</id>
               <username>admin</username>
               <password>admin123</password>
         </server>
                                    

           <server>
                <id>snapshots</id>
                <username>admin</username>
                <password>admin123</password>
         </server>         

</servers>    //设置发布java包时需要的用户名和密码
<mirrors>
       <mirror>
           <id>mirrorId</id>
           <mirrorOf>*</mirrorOf>
           <name>mirrorOfrepository</name>
           <!--<url>http://my.repository.com/repo/path</url>-->
           <url>http://192.168.24.82:8081/nexus/content/groups/public</url>
       </mirror>
</mirrors>        //设置maven远程仓库的镜像
<activeProfiles>

            <activeProfile>centralprofile</activeProfile>

</activeProfiles>   //激活中央仓库
<pluginGroups>
            <pluginGroup>org.mortbay.jetty</pluginGroup>  

            <pluginGroup>org.codehaus.cargo</pluginGroup>                

</pluginGroups>         //配置eclipse插件支持热部署
    关于settings.xml文件中的节点元素的含义下面分别介绍:
1)localRepository:表示maven中本地方库的位置
2)interactiveMode:表示是否使用用户输入的交互式模式
3)offline:表示是否是离线模式
4)servers:表示连接到远程服务器时需要使用的验证方式
5)mirrors:用于定义一系列远程仓库的镜像,我们在定义pom.xml文件的时候会定义一个下载文件的时候使用的远程仓库,当远程仓库顾不上的时候我们就可以通过建立镜像来缓解远程仓库的压力,因为每一个仓库都有一个id,这样我们可以创建自己的镜像关联到远程仓库,而url就指明了远程仓库中的地址。
     settings.xml文件的总结需要了解的两点,一是全局的settings.xml文件和用户级别的settings.xml文件的不同点,另外就是settings.xml文件中重点的节点含义,最主要的使我们要理解本地仓库的配置和远程仓库的配置,maven既然是构建工具,理所当然的就管理了我们所有项目中需要的构件,这个settings.xml文件的配置就是告诉我们这些构建放到了哪里。
     下面是pom.xml文件的配置,pom.xml文件是maven工作的主要配置文件,在这个仓库中我们通过使用三坐标的方式来配置项目需要使用的远程仓库,定义项目打包的形式以及项目所依赖的关系。

     在pom.xml文件中我们通过groupId、artifactId和version三坐标来定义我们需要从哪里下载我们需要的jar包,pom.xml文件可以继承、聚合和依赖,下面是<parent>节点,用于继承:
<parent>
      <groupId>com.tgb</groupId>
      <artifactId>itoo-exam-parent</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <relativePath>../itoo-exam-parent/pom.xml</relativePath>
</parent>
使用<dependency>定义依赖关系:
<dependency>
       <groupId>com.tgb</groupId>
       <artifactId>itoo-easyui</artifactId>
       <version>${easyui.version}</version>
       <type>war</type>
</dependency>

使用<build>设置编译部分,主要元素有build和report:
<build>  
     <defaultGoal>install</defaultGoal>  
     <directory>${basedir}/target</directory>  
     <finalName>${artifactId}-${version}</finalName>  
     <filters>  
           <filter>filters/filter1.properties</filter>  
     </filters>  
</build>
defaultGoal: 定义默认的目标或者阶段。如install   
directory: 编译输出的目录   
finalName: 生成最后的文件的样式   
filter: 定义过滤,用于替换相应的属性文件,使用maven定义的属性。设置所有placehold的值 
 
     在pom.xml文件中对于属性的引用,我们可以采用${propertyName}的形式,例如可以采用${env.PATH}引用系统的环境变量,采用${project.version}可以引用project根元素下的子元素的值,采用${settings.localRepository}可以引用settings下的本地仓库的值等等。
     以上就是Maven中最重要的两个配置文件的解析,使用Maven,我们在pom.xml文件中定义好我们需要到哪个仓库去下载我们需要的构件,然后通过settings.xml文件中配置的本地仓库的位置,将我们下载的构件放到我们本地仓库,当我们再次需要此构件的时候,Maven首先从我们本地仓库寻找,当找不到后会到我们的私服上寻找,再找不到时就会到外部的中央仓库去寻找,然后依次放入到私服和本地仓库。所谓的私服就是一种特殊的远程仓库,它存在于局域网内部,它的作用除了节省自己的外网宽带,减少自己的开支以外,降低了中央仓库的负荷,加速了Maven的构建,提高了构建的稳定性。

     每一个使用Maven的用户都知道,Maven的设计理念是“约定优于配置”,在Maven中,首先他的目录结构是定义好的,如下:



${proj-dir}/src/main/java
其中存放项目的.java文件。

${proj-dir}/src/main/resources
其中存放项目资源文件,如spring,hibernate配置文件。

${proj-dir}/src/test/jave   其中存放所有测试.java文件,如JUnit测试类。
${proj-dir}/src/test/resources
其中存放测试资源文件。

${proj-dir}/target   其中存放项目输出位置
     这样做的好处我们不在需要大量的配置来定义项目的输出位置以及项目不同文件的存放位置,对所有的maven项目来说,我们都可以使用同一个maven命令来对项目进行操作,例如使用mvn clean
install,只要我们正确的配置了项目,仅仅一条命令就可以帮助我们构建我们的项目,如此就方便了我们的使用。

     以上就是关于Maven的全部内容,Maven的生命周期这里不介绍了。有兴趣的小伙伴可以查阅更多的文章。Maven是一个工具,而工具就是来方便人们的使用,为了解决某些方面的不足才出现的,Maven带来的好处就是方便了我们项目的构建管理,使得项目构建管理过程成为了最方便的自动流水线,只要我们遵循Maven的固有约定,管理我们的项目将变得更加容易。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: