archetype 模版项目介绍
使用 IDEA 打开之后发现,还是一个 Maven 项目。
archetype-resources
打开 pom 文件,可以看到里面 ${groupId}
、 ${artifactId}
、${version}
使用占位符指定的组织版本,这些就是新创建项目时指定的。
archetype-metadata.xml
archetype-metadata.xml 里面为元数据配置。
- fileSet:用来生成一些项目中的文件。如果文件或目录名称包含
__property__
模式,则将其替换为相应的属性值。
属性 | 类型 | 描述 |
filtered | boolean | 过滤文集,将指定文件直接复制不需要修改。默认值为:false。 |
packaged | boolean | 打包文件,指定文件将在package属性之前的目录结构中生成/复制。它们可以是非打包的,这意味着所选文件将在没有该前缀的情况下生成/复制。默认值为:false。 |
encoding | String | 过滤内容时使用的编码。 |
fileSet 包含以下元素:
元素 | 类型 | 描述 |
directory | String | 生成项目文件的目录 |
includes/include* | List | 包含文件 |
excludes/exclude* | List | 排除文件 |
因为生成项目不需要 .idea *.iml 文件,所以直接删除:
- module 就是要生成的项目一共几个 module
属性 | 类型 | 描述 |
id | String | The module's artifactId. |
dir | String | The module's directory. |
name | String | The module's name. |
元素 | 类型 | 描述 |
fileSets/fileSet* | List | 文件 |
modules/module* | List | 模块 |
可以看出里面就是自己的项目模版。
__rootArtifactId__-controller
在生成的时候,就会根据传入的 artifactId 生成指定的 module 名字。
使用
- clean install
- IDEA Add Archetype
- 选择使用 Archetype 生成新项目
- 填写新生成项目的名字等
- 生成新项目
扩展
Q: 如何自定义包路径?
A: 可以使用 requiredProperties
自定义参数。通过传入自定义的参数,来生成自定的包路径。
比如发现新生成项目的包路径都是 com.liuzhihang.archetype
,这样肯定是不行的,每个项目有每个项目自己的包路径。只需要做以下修改:
- 将
requiredProperties
添加到项目中,然后添加新变量middlePackage
。
<requiredProperties> <!--使用archetype时候必须要求输入的参数--> <requiredProperty key="groupId"> <!--可以设置默认值,使用archetype会使用默认值--> <defaultValue>com.liuzhihang</defaultValue> </requiredProperty> <requiredProperty key="package"> <defaultValue>com.liuzhihang</defaultValue> </requiredProperty> <requiredProperty key="middlePackage"> <defaultValue>${rootArtifactId}</defaultValue> </requiredProperty> </requiredProperties>
- 修改模版的文件名
如果文件或目录名称包含 __property__
模式,则将其替换为相应的属性值。到这里还不行,因为生成的包名还没改。
- 修改内部文件的包路径。包括 .java 、** .xml** 、** .properties** 等。
- 重新 clean install
注:此时可能会报错,需要在 src/test/resources/projects/basic/archetype.properties
下添加 middlePackage=basic
再重新尝试下。
在生成时注意指定 middlePackage
属性。
Q: 我想自定义 Application 的名字怎么弄?
A: 同样使用 requiredProperties
自定义参数。
<requiredProperty key="appName"> </requiredProperty> 复制代码
当然也可以起一个通用的名字。
Q: 别的小伙伴怎么用?
A: 当然是 deploy 到私服了, 在 pom 里面添加如下配置,指定自己公司的私服。deploy ,这样就可以和小伙伴一起愉快的使用啦。
<!-- 远程仓库 --> <distributionManagement> <repository> <id>releases</id> <name>Nexus Release Repository</name> <url>http://liuzhihang.com:xxxx/repository/maven-releases/</url> </repository> <snapshotRepository> <id>snapshots</id> <name>Nexus Snapshot Repository</name> <url>http://liuzhihang.com:xxxx/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement>
Q: 我要怎么从 IDEA 删除 Archetype ?
A: 这么好用怎么舍得删除呢?只要找到以下路径
liuzhihang % > pwd /Users/liuzhihang/Library/Caches/JetBrains/IntelliJIdea2020.1/Maven/Indices
里面有一个 UserArchetypes.xml
, 打开,删除掉里面的 archetype 就行。