maven骨架archetype的意义在于一些项目的基础项:如引入的maven组件,例如eureka,ribben等,不希望每次新建项目都重复做一遍,还有例如公司规范的log格式,单元测试工具等,在新建项目的时候,希望可以将这些自定义的东西一键生成。这里就简单的讲解一下maven管理的java Spring Boot的项目,如何建立骨架并使用。

建立样例项目

参见Spring boot的官网,然后可以引入一些需要的组件,并做一些必要的修改。

生成项目骨架

  • 样例项目的根目录,pom文件引入
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>2.2</version>
<configuration>
<addDefaultExcludes>false</addDefaultExcludes>
</configuration>
</plugin>
  • 使用命令行,在项目根目录调用:mvn archetype:create-from-project

  • 生成target目录,target目录下:target/generated-sources/archetype就是真正的骨架项目,有对应的pom文件,src下有生成骨架相关的resource资源,这些资源就来自于原项目

  • 如果要调整骨架中生成的具体项目文件,需要更改对应的文件
示例:/user-user/user-user-server/pom.xml
<dependency>
<groupId>com.hzphfin.user.user</groupId>
<artifactId>user-user-api</artifactId>
<version>${project.version}</version>
</dependency>
 
<dependency>
<groupId>com.hzphfin.user.user</groupId>
<artifactId>user-user-service</artifactId>
<version>${project.version}</version>
</dependency>
在骨架中被手工修改为:
<dependency>
<groupId>${groupId}</groupId>
<artifactId>${rootArtifactId}-api</artifactId>
<version>${project.version}</version>
</dependency>
 
<dependency>
<groupId>${groupId}</groupId>
<artifactId>${rootArtifactId}-service</artifactId>
<version>${project.version}</version>
</dependency>
  • 如对目录及原忽略一些文件,要修改/target/generated-sources/archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
示例:modules相关目录修改如下
<modules>
<module id="${rootArtifactId}-api" dir="__rootArtifactId__-api" name="${rootArtifactId}-api">
</module>
<module id="${rootArtifactId}-server" dir="__rootArtifactId__-server" name="${rootArtifactId}-server">
</module>
<module id="${rootArtifactId}-service" dir="__rootArtifactId__-service" name="${rootArtifactId}-service">
</module>
<module id="${rootArtifactId}-dao" dir="__rootArtifactId__-dao" name="${rootArtifactId}-dao">
</module>
</modules>
 
  • maven archetype默认会有以下一些build-in的变量,用这些变量替换文件中的原有的值
${rootArtifactId} controller
${artifactId} controller-(api,dao,server,service)
${package}  
${packageInPathFormat}  
${groupId} com.hzphfin.app
${version} 0.0.1-SNAPSHOT
示例:
<groupId>com.hzphfin.app</groupId>
<artifactId>controller</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
变为:
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<packaging>pom</packaging>
 
  • 如果是目录名更改时使用变量,使用类似这样的结构:__artifactId__
  • 如果要自定义一些替换的变量,需在/target/generated-sources/archetype/src/main/resources/META-INF/maven/archetype-metadata.xml加入如下的key-value
<requiredProperties>
<requiredProperty key="groupId"/>
<requiredProperty key="artifactId"/>
<requiredProperty key="version">
  <defaultValue>1.0.0</defaultValue>
</requiredProperty>
</requiredProperties>
 

部署项目骨架

以上已完成骨架的创建,接下来说骨架的部署,可以分本地和远程部署
命令行切换到骨架的根目录:/target/generated-sources/archetype
执行:mvn install 将骨架项目安装在本地
执行:mvn deploy 将骨架项目上传到nexus服务器(具体上传配置及设置骨架项目pom文件中加入distributionManagement请参见其他文档)
 

使用项目骨架生成项目

以下讲解完成后,如何在IDE新建项目:
安装后,在eclipse中新建maven项目

 
本地安装的骨架,在Default Local应有显示,远程安装的骨架,请先进入configure配置远程来源后找到对应骨架

输入必须的变量后,点击finish就能新建完成
 

创建并使用maven archetype的随笔的更多相关文章

  1. [liusy.api-SMJ]-创建工程范例 MAVEN archetype 学习阶段(一)

    由于这个架构需要好多不同能力的工程,为了创建方便减少冗余,创建工程范例尤为重要 学习阶段: 参考资料 http://maven.apache.org/archetype/maven-archetype ...

  2. Jersey 2.x 从Maven Archetype 创建一个新项目

    创建 Jersey 工程需要使用 Apache 的 Maven 软件工程和管理工具.所有的Jersey产品模块都可以在 Maven中央库 中找到.这样的话 Jersey 可以非常容易和其他基于 Mav ...

  3. 使用Maven命令行快速创建项目骨架(archetype)

      > mvn archetype:generate 接下来就会输出一些列带索引变化的archetype项可供我们选择,然后提示我们选择一个编号,可以直接回车选择默认的编号(392),然后就跟着 ...

  4. Jersey入门一:从Maven Archetype创建jersey项目

    1.用Ctrl+空格调出Spotlight搜索,输入ter调出终端窗口  2.在终端窗口进入将创建jersey项目的目录:  3.输入如下命令,创建一个名为的simple-service项目: m ...

  5. 使用Vaadin的maven archetype创建一个空Vaadin项目

    所在公司要求使用这个臭屎粑粑一样的Vaadin,我也没办法.为了更好地开展工作,对得起老板发给我的工资,就算是臭屎粑粑,也要尽力给他玩儿出花样来. Vaadin针对Eclipse和Netbeans等I ...

  6. 使用Maven Archetype创建Java项目模板

    1.over view 简而言之,Archetype是一个Maven项目模板工具包.原型被定义为一种原始的模式或模型,所有其他同类的东西都是从中产生的.当我们试图提供一个提供生成Maven项目的一致方 ...

  7. 老大说新项目的结构和 xxx 项目一样就可以了,我 ……(使用 Maven Archetype 快速创建项目)

    前言 又要开发新项目了,还是创建新项目,怎么办?老大说按照 xxx 项目的结构创建一个新项目就可以了. 公众号:liuzhihangs,记录工作学习中的技术.开发及源码笔记:时不时分享一些生活中的见闻 ...

  8. maven archetype二三事

    maven plugin 创建maven archetype 骨架的plugin是 <plugin> <groupId>org.apache.maven.plugins< ...

  9. maven archetype生成自定义项目原型(模板)

    maven archetype可以将一个项目做成项目原型,之后只需要以此原型来创建项目,那么初始创建的项目便具有原型项目中的一切配置和代码.通俗讲就是一个项目模板. eclipse中那些快速生成mav ...

随机推荐

  1. 03-01_WebLogic一些概念名词

    WebLogic一些概念名词 域(Domain) 管理服务器(Administrative Server) 被管服务器(Managed Server,受管服务器) 集群(Cluster) 机器(Mac ...

  2. cent7安装ffmpeg

    FFmpeg是一个领先的多媒体框架工具集,几乎能够对任何格式的音视频文件进行解码,编码,转码,复用,解复用,流式传输,过滤和播放. 不管这些音视频文件所采用的格式是由某些标准委员会,社区还是公司设计的 ...

  3. myeclipse配置jboss

    一 相关软件准备 jdk1.6     Myeclipse    jboss 6.1 下载地址:http://www.jboss.org/jbossas/downloads/二 安装 下载完jboss ...

  4. php框架安装

    安装yii框架 跳转到composer.phar目录 cd C:\ProgramData\ComposerSetup\bin 安装yii2高级版 php composer.phar create-pr ...

  5. [ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest)

    [ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest) 决策树 决策树算法以树状结构表示数据分类的结果.每个决策点实现一个具有离散输出的测试函数,记为分支 ...

  6. 数据库事务总结(一)-ACID

    概述 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作. 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源.通过将 ...

  7. PyQt5---ChangeIcon

    # -*- coding:utf-8 -*- ''' Created on Sep 13, 2018 @author: SaShuangYiBing ''' import sys from PyQt5 ...

  8. Python csv.md

    csv csv模块可以用于处理从电子表格和数据库导出的数据到带有字段和记录格式的文本文件,通常称为逗号分隔值(csv)格式,因为逗号通常用于分隔记录中的字段. Reading csv.reader(c ...

  9. 各种SQL查询技巧汇总 (转)

    原文地址: https://blog.csdn.net/tim_phper/article/details/54963828 select select * from student; all 查询所 ...

  10. vue之常用指令

    事件缩写 v-on:click= 简写方式 @click= 事件对象$event <!DOCTYPE html> <html lang="en"> < ...