maven自定义archetype

1.前言
  在工做过程当中必然会遇到建立项目的蛋疼事,一个项目包含茫茫多的配置文件。例如:Spring、mybatis、log4j、pom.xml、git等,其余的还包括项目目录骨架。整个过程下来顺利的话几十分钟,若是对公司项目配置不了解的状况下,几个小时都是有可能的。
      maven的强大就不言而喻了,自定义项目骨架主要利用到 archetype插件。在IDE中建立maven项目时,能够选择archetype类型快速建立项目目录。例如最多见的maven-archetype-plugin 的quickstart。maven考虑到通用性,提供的是最简单的目标。
      新建项目时,配置文件每每是从其余项目拷贝过来的,拷贝的问题在于很容易踩坑,而且不容易定位问题。
      利用maven一键生成项目骨架能够解决全部的问题,下面切入正题吧。
 
2.建立模板项目
  模板项目也是一个普通的maven项目,可是其有特定的目录结构即实际使用的项目的目录结构。
  第一步:首先找一个现有原型项目,这里假设原型项目为 A项目,A项目具备全部详细的配置信息。
  第二步:改造A项目
    删除A项目里全部特定业务相关的代码、文件。保留最后生成的最小配置文件集合。通常项目里的配置文件包括如下内容:
      • pom.xml的jar包依赖、插件配置,保留最小依赖集
      • Spring、Struts二、mybatis配置  
      • log4j.xml        
  另外还有项目的基本包结构配置,常见的包包括:dao、service、service.impl、util、entity等。
  最好为每一个配置文件编写一个demo,并注释掉,这样方便团队其余成员理解和使用。为每一个包目录编写一个demo,例如dao层。这样在使用生成的archetype建立项目时,就会生成对应的配置文件和对应的包目录。
  到这步一个项目基本骨架雏形已经成型了,其实在整个过程当中这一步是真正咱们须要关心的。一个干净、易用的模板才是最好的。
  这里咱们称改装后的A项目为A-min(hhyz-archetype-web)项目.
    
  第三步: 在项目的POM文件中增长:
    
<build>
    <finalName>hhyz-archetype-web</finalName>
        <pluginManagement>  
            <plugins>  
                <plugin>  
                    <groupId>org.apache.maven.plugins</groupId>  
                    <artifactId>maven-archetype-plugin</artifactId>  
                    <version>2.2</version>  
                </plugin>  
                <plugin>  
                    <groupId>org.apache.maven.plugins</groupId>  
                    <artifactId>maven-compiler-plugin</artifactId>  
                    <configuration>  
                        <source>1.5</source>  
                        <target>1.5</target>  
                    </configuration>  
                </plugin>  
                <plugin>  
                    <groupId>org.apache.maven.plugins</groupId>  
                    <artifactId>maven-resources-plugin</artifactId>  
                    <configuration>  
                        <encoding>UTF-8</encoding>  
                    </configuration>  
                </plugin>  
            </plugins>  
        </pluginManagement>
</build>

  第四步: 从A-min项目中建立maven骨架项目git

    打开CMD进入命令行,在项目根目录里执行: mvn archetype:create-from-project。web

    成功执行完以后,在target/generated-sources/ 下有个archetype目录,这个就是生成的 archetype。能够看到这个目录其实就是普通的maven项目,也就是咱们最终的骨架模板项目,咱们称之为A-template项目。apache

    有几个目录、文件须要说明:mybatis

      • src/main/resources/archetype-resources  经过A-template骨架建立的项目包含的全部的文件和目录都在这个目录下
      • src/main/resource/META-INF/maven/archetype-metadata.xml  此文件是配置文件,告诉archetype插件,archetype-resources里面哪些文件须要包含到建立出的项目里。打开这个文件发现有个fileSets标签,包含一系列的fileSet标签。不难发现fileSet就是对archetype-resources下的资源描述。          

  第五步:改造A-templateeclipse

    archetype:create-from-project并不是彻底智能,须要本身稍加修改maven

      • 修改pom.xml文件

          修改packing的值为jar或者war测试

      • 修改archetype-metadata.xml
<requiredProperties>
      <requiredProperty key="groupId"/>
      <requiredProperty key="artifactId"/>
      <requiredProperty key="version">
          <defaultValue>1.0.0</defaultValue>
      </requiredProperty>
  </requiredProperties>

          在fileSets同级下增长requiredProperties标签。requiredProperties定义模板项目中一些参数值,内置的参数包括:groupId,artifactId,version,package。本身能够提供这些参数的默认值,也能够增长本身额外的参数。大部分状况下,内置的参数足够用。fileSet标签有一个filtered=“true”属性,表示该fileSet可使用参数变量。在文件中引用参数变量的方式${参数名},例如${package}.一般生成A-template项目时,archetype插件会扫描A-min全部的文件,把须要替换为参数的地方自动替换。毕竟代码没有那么智能,有些地方会有问题。因此,咱们要检查每一个文件的参数部分是否是咱们预期的。增长参数、删除参数来达到咱们的要求。           ui

  第六步:部署生成的archetype到本地仓库spa

    cd进入generated-sourced/archetype目录,运行maven命令:mvn clean install,到这里咱们的模板骨架项目基本完成。插件

3.使用自定义的模板建立项目

  方式一:使用命令行

        在本身的workspace下执行  mvn archetype:generate -DarchetypeCatalog=local  -o 
选择刚才的模板项目的编号,按照提示输入参数值。这样项目就建立完毕了。若是找不到咱们的模板项目,检查一下~/.m2/目录下是否有archetype-catalog.xml文件。若是没有在A-template的根目录执行一下 
mvn archetype:update-local-catalog -o
 
  方式二:经过IDE建立(推荐)
  
  注:有时候会找不到新加的archetype,重启eclipse就行了。

 

4.部署到公司内部的maven中央仓库
 
     通过反复测试以后,咱们的模板项目就能够发布了。把咱们的模板项目部署到公司内部的maven仓库。其余团队成员就能够经过方式二使用咱们的骨架模板建立项目了。IDE帮咱们自动下载模板项目的jar包到本地仓库。方式一则须要本身手动下载 ,在任何一个项目里添加咱们的模板项目依赖,执行maven eclipse:eclipse命令,就会下载jar包。方式一比较麻烦,推荐使用方式二,简单易用。
相关文章
相关标签/搜索