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. java8时间操作

    import java.time.*; import java.util.Date; /** * @Auther kejiefu * @Date 2018/5/17 0017 */ public cl ...

  2. web.config中的InProc模式 与 StateServer模式[转]

    开发asp.net应用时,修改web.config中的SessionState节点. <sessionState mode="StateServer" stateConnec ...

  3. mysql 5.5 数据库 utf8改utf8mb4

      由于需要用到utf8mb4,之前是utf8现在给改成utf8mb4 查看当前环境 SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_ ...

  4. 通过ajax GET方式查询数据,Django序列化objects

    点击“查找2”按钮,通过ajax GET方式进行查询数据,这样页面不需要整体刷新,之后清空tbody数据,将查询结果重新附加到tbody 前端html: <div class="box ...

  5. cd mkdir mv cp rm 命令目录相关操作

    切换目录: cd 家目录 cd. 当前目录 cd.. 当前上一级目录 cd../../当前目录的上上级目录 cd - 返回前一个目录 --------------------------------- ...

  6. Spark 分布式调试工具

    0. 说明 编写工具类,考察 Spark 分布式程序的执行地点 1. 工具类编写 [ JMX ] Java Management Extend , Java 管理扩展服务. 主要用于运维和监控. [测 ...

  7. DevExpress08、SchedulerControl、DateNavigator、SpreadsheetControl

    SchedulerControl 该控件以可视化的效果显示预约或者设定的行程: 该控件预约后的数据存储在SchedulerStorage对象里, 当以拖动形式添加SchedulerControl控件到 ...

  8. Linux vsftpd 配置文件详解

    .默认配置: >允许匿名用户和本地用户登陆. anonymous_enable=YES local_enable=YES >匿名用户使用的登陆名为ftp或anonymous,口令为空:匿名 ...

  9. es5与es6继承思考

    es5与es6继承思考 es6继承 class Father{ constructor(name){ this.name = name; } getName(){ console.log(this.n ...

  10. WorldWind源码剖析系列:配置载入器类ConfigurationLoader

    配置载入器类ConfigurationLoader主要从指定的路径中加载保存星球相关参数的xml文件,从中读取数据来构造星球对象及其所关联的可渲染子对象列表并返回.该类的类图如下所示. 该类所包含的主 ...