资讯专栏INFORMATION COLUMN

maven自定义archetype

wangjuntytl / 613人阅读

摘要:首先进入到工程文件下进行这个项目,完成后会打包成并加入到本地仓库中,下面我们只需要根据本地仓库中的包去创建我们事先定义好的项目框架,执行命令后会穿件如下的项目结构好了现在可以进入到中去执行运行测试用例。

此篇主要来谈谈maven自定义archetype,maven是一个很好的代码构建工具,采用“约定优先于配置”的原则进行项目管理,相信很多的java开发者应该都了解maven并可能在工作当中都是通过maven来管理项目的,此篇就不再深究maven的概念问题,侧重点来聊聊如何自定义archetype。

0x01 为什么要自定义archetype

maven也内置了很多的archetype供用户选择使用什么样的骨架去创建一个项目,比如:

maven-archetype-webapp

maven-archetype-quickstart

在创建一个maven项目的时候会列出很多archetype供选择,maven默认的archetype是maven-archetype-webapp。

但是在一个团队做开发的过程中,可能仅仅依靠maven预先提供的archetyp可能是不够的,团队之间协作有自己的定义方式,每个人的结构定义风格也不尽相同,在这样的背景下我们有必要去定义一个统一的代码骨架供团队使用,这样做的好处还有在新人加入团队的初期能够快速的理解项目。

0x02 创建自定义archetype工程

archetype是在maven-archetype-plugin插件执行generate目标的时候进行配置的,本次使用IDEA进行archetype的开发,创建archetype的目录结构如下:

下面对上述图片中的描述进行详细的解释:

根目录下boyuarchetype/pom.xml和一般的maven项目一样主要定义项目的坐标等信息。

所有的项目骨架内容都集中在boyuarchetype/src/main/resources/archetype-resources中,其中的pom.xml定义了待生成项目的pom文件的内容,/src/main/java、/src/test/java中分别定义了待生成项目中相应目录下的内容。

boyuarchetype/src/main/resources/META-INF/maven/archetype-metadata.xml中定义相关的元数据描述。

0x03 archetype工程文件详细介绍

1.boyuarchetype/pom.xml


  4.0.0
  com.none.budmwp
  boyuarchetype
  jar
  1.0
  boyuarchetype
  http://maven.apache.org


pom.xml中的packaging和普通的maven项目打包方式相同为jar,没有和插件开发的打包方式保持一致。

groupId一般的命名规则为公司名加项目名称,如:com.segmentfault.budmwp

artifactId是指budmwp这个项目中的模块名称。

modelVersion在maven2和maven3中都是4.0.0

2.boyuarchetype/src/main/resources/archetype-resources/pom.xml


    4.0.0
    ${groupId}
    ${artifactId}
    ${version}
    ${artifactId}
    http://maven.apache.org

    
        
            junit
            junit
            3.8.1
            test
        
    

    
        
            
                
                    org.apache.maven.plugins
                    maven-archetype-plugin
                    
                        1.8
                        1.8
                    
                
                
                    org.apache.maven.plugins
                    maven-source-plugin
                    
                        UTF-8
                    
                
            
        
    


上面${}标识的变量都是通过maven中的命令行传进来的,如:mvn archetype:generate -DgroupId=com.none.budmwp

3.boyuarchetype/src/main/resources/META-INF/maven/archetype-metadata.xml



    
        
            src/main/java
            
                **/*.java
            
        
        
            src/test/java
            
                **/*.java
            
        
    
    
        
    

filtered="true"标识下面提到的${}是否要进行替换

packaged="true"标识boyuarchetype/src/main/resources/archetype-resources/src/main/java中对应的内容是否要放入到package中。

4.boyuarchetype/src/main/resources/archetype-resources/src/main/java/App.java

package ${package};

/**
 * @author boyu
 * @version $Id: a, v0.1 16/5/2 下午2:28 boyu Exp $.
 */
public class App
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
    }
}

${package}会被maven命令行中传进来的参数进行替换。

0x04 构建archetype工程

通过上面将一个简单的archetype工程已经搭建完成,接下来要去根据这个archetype创建我们定义好的项目骨架。
首先进入到boyuarchetype工程文件下进行make clean install这个项目,完成后会打包成boyuarchetype-1.0.jar并加入到本地仓库中,下面我们只需要根据本地仓库中的boyuarchetype-1.0.jar包去创建我们事先定义好的项目框架, mvn archetype:generate -DgroupId=com.none.budmwp -DartifactId=boyuarchetest -Dpackage="com.none.budmwp.boyuarchetest" -DarchetypeGroupId=com.none.budmwp -DarchetypeArtifactId=boyuarchetype -DarchetypeVersion=1.0 -X -DarchetypeCatalog=local

执行命令后会穿件如下的项目结构:

好了现在可以进入到boyuarchetypetest中去执行mvn test 运行测试用例。到这里整个项目就创建完毕了。

0x05 总结

初入java,进入到公司参与项目的第一件事就是拉代码学习代码,但是没有接触过过多的java开发不知道maven、eclipse所谓何物,只有依赖老手们领进门了。maven是一个很好的构建管理工具,目前java重度用户阿里、支付宝都是通过maven来进行项目构建的,所以还是有必要去了解了解maven的,未来还很遥远,让maven来提高你的项目构建效率吧。

0x06 参考资料

大家可以去参考许晓斌著的maven实战一书,里面讲maven讲的很好,初学者可以快速入门。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/65867.html

相关文章

  • 撸一个Java脚手架,一统团队项目结构风格

    摘要:这个文件会出现在创建的模板工程中,如果是单模块工程,则是对整个项目的依赖管理如果是多模块工程,该是总文件,该文件中会定义项目的子模块以及对子模块的依赖进行管理等,子模块定义在子模块下,子模块文件只管理子模块的依赖。 虽然maven已经提供了maven-archetype-webapp、maven-archetype-quickstart等项目骨架帮助我们快速构建项目架构,但是默认提供的...

    邱勇 评论0 收藏0
  • 使用 Maven 构建 Java 项目

    摘要:基本配置环境变量环境变量中添加为主目录在中添加使用阿里云中央仓库修改根目录下文件夹中的文件,内容如下创建基于的项目使用命令行创建使用原型插件创建工程。 「博客搬家」 原地址: 简书 原发表时间: 2017-03-23 Maven 是基于项目对象模型「POM」,可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。本文总结了 Maven 的基本用法。 1. Maven...

    printempw 评论0 收藏0
  • 微服务应用架构脚手架

    摘要:微服务应用架构脚手架开源项目地址作为一名码农,经常要为了工作或业余爱好自己搭建项目大公司除外,配环境,找包,很是烦人。可快速创建用于开发环境的基础应用架构。前提是你得有私服的发布账号及密码执行将脚手架发布到私服。 微服务应用架构脚手架 开源项目地址: http://git.oschina.net/chinax... 作为一名码农,经常要为了工作或业余爱好自己搭建项目(大公司除外),配环...

    APICloud 评论0 收藏0
  • Maven配置安装及命令生成java项目

    摘要:准备工作配置安装下载访问密码官方下载地址安装解压到盘根目录下目录随便放最好不要有中文配置环境变量测试打开命令窗口键入可以输出版本信息就证明环境变量生效且安装成功修改的本地仓库位置及镜像路径进入的根目录点击打开文件夹编辑文件 准备工作 配置安装Maven 下载 apache-maven-3.2.3.zip 访问密码 1d47 官方下载地址 安装 解压apache-m...

    MartinHan 评论0 收藏0
  • maven创建项目及maven常用命令

    摘要:用创建项目组织标识包名项目名称指定,,创建一个,创建一个是否使用交互模式其中,为项目骨架类型,可选择的有每一个骨架都会建相应的目录结构和一些通用文件,最常用的是和骨架。再比如这告诉来从模板创建项目。 用maven创建项目 mvn archetype:generate -DgroupId=cn.codingxiaxw.seckill -DartifactId=seckill -Dpack...

    ephererid 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<