# CloudArchetype **Repository Path**: CloudALM/CloudArchetype ## Basic Information - **Project Name**: CloudArchetype - **Description**: springboot Maven 骨架 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2017-10-06 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #CloudArchetype 由于我们的项目周期比较短,所以要频繁创建项目,而且项目的架构几乎一样,每次重复相同的过程肯定很不爽,有了maven(来自百度的解释:Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.),那一切变了简单了,最近用了下,感觉真的挺不错的,现在和大家分享下怎么创建属于自己的项目骨架,也就是项目模板。 创建属于自己的项目骨架主要用了maven archetype这个插件。 ## 第一步:创建一个项目的原型 ![prototype](/doc/images/prototype.png) ## 第二步: mvn archetype:create-from-project 添加插件依赖 ``` org.apache.maven.plugins maven-archetype-plugin 3.0.1 ``` 在项目根目录执行命令:mvn archetype:create-from-project ![create-from-project](/doc/images/create-from-project.png) 新生成的archetype在target/generated-sources/archetype目录 ![archetype-resources](/doc/images/archetype-resources.png) ### 注意 maven创建自定义模板时需要注意的问题 - 1、问题 在eclipse 中执行 archetype:create-from-project命令时候总是报错: [ERROR] Failed to execute goalorg.apache.maven.plugins:maven-archetype-plugin:2.4:create-from-project(default-cli) on project webproject: ${maven.home} is not specified as adirectory: 'D:\GIT\1006\CloudArchetype\EMBEDDED'. - 2、解决 在eclipse中配置自己系统里安装的maven ![install-maven](/doc/images/install-maven.png) 在执行 archetype:create-from-project的配置界面上,选中自己安装的maven,而不要用eclipse内嵌的。 ![select-maven](/doc/images/select-maven.png) ## 第三步: 确认archetype/src/main/resources/META-INF/maven/archetype-metadata.xml包含了所有的资源 将资源中需要订制的地方替换成相应的`${groupid},${artifactid},${package}`,这样maven会在创建项目的过程中自动将这些值传入的相应要替换的地方 比如: ``` spring: application: name: ${artifactId} devtools: restart: enabled: false #是否开启开发者工具(true/false) additional-paths: src/main/java exclude: static/**,WEB-INF/view/** aop: proxy-target-class: true #false为启用jdk默认动态代理,true为cglib动态代理 ``` 修改archetype-metadata.xml,在fileSets同级下增加requiredProperties标签。requiredProperties定义模板项目中一些参数值,内置的参数包括:`groupId,artifactId,version,package`。自己可以提供这些参数的默认值,也可以增加自己额外的参数。大部分情况下,内置的参数足够用。fileSet标签有一个`filtered="true"`属性,表示该fileSet可以使用参数变量。在文件中引用参数变量的方式${参数名},例如${package}.通常生成项目,archetype插件会扫描所有的文件,把需要替换为参数的地方自动替换。毕竟代码没有那么智能,有些地方会有问题。所以,我们要检查每个文件的参数部分是不是我们预期的。增加参数、删除参数来达到我们的要求。 ![update-archetype-metadata](/doc/images/update-archetype-metadata.png) 那创建项目的时候回自动替换里面的变量,如果创建的文件名里面有变量,那使用`__artifactId__`这个格式。 ``` com.***.***.archetype ***-archetype *.* ``` 这样可以发布到自己想要的位置,如果不修改那就放入默认的位置。 ## 第五步:部署我们的模板项目到本地仓库测试 在archetype根(..\target\generated-sources\archetype)目录执行:mvn clean install,将该archetype传到本地的maven仓库 大功告成! ## 第六步:部署到公司内部的maven中央仓库 - 在archetype根POM.xml添加依赖 ``` org.apache.maven.plugins maven-source-plugin true attach-sources jar-no-fork compile jar user-release User Porject Release http://127.0.0.1:8081/repository/releases/ user-snapshot User Porject Snapshot http://127.0.0.1:8081/repository/snapshots/ ``` - settings.xml配置私服账户 ![settings](/doc/images/settings.png) - 执行部署 deploy ![deploy](doc/images/deploy.png) ## 第七步:通过自定义archetype创建项目骨架 ![new-project](/doc/images/new-project.png) ![add-archetype](/doc/images/add-archetype.png) 当然是用命令也能创建,通过下面命令: mvn archetype:generate -DarchetypeGroupId=xxx.archetype -DarchetypeArtifactId=xxx-archetype -DarchetypeVersion=xx就可以创建项目了。