zoukankan      html  css  js  c++  java
  • 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、Struts2、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骨架项目

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

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

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

        • 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-template

        archetype:create-from-project并非完全智能,需要自己稍加修改

        • 修改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所有的文件,把需要替换为参数的地方自动替换。毕竟代码没有那么智能,有些地方会有问题。所以,我们要检查每个文件的参数部分是不是我们预期的。增加参数、删除参数来达到我们的要求。           

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

        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包。方式一比较麻烦,推荐使用方式二,简单易用。

     

  • 相关阅读:
    快速入门系列--MVC--07与HTML5移动开发的结合
    快速入门系列--WebAPI--01基础
    快速入门系列--CLR--02多线程
    MongoDB快速入门
    ubuntu 12.04 server编译安装nginx
    apache 正反向代理
    c# 继承,多态,new /overrid 区别, 引用父类的方法
    python 异步线程简单实现
    ubuntu上完全卸载package
    apache2:Invalid option to WSGI daemon process definition
  • 原文地址:https://www.cnblogs.com/happy-coder/p/6430802.html
Copyright © 2011-2022 走看看