大多数公司都会有一个通用的模板项目来帮助您快速创建项目。通常,这个项目需要集成一些内部中间件、单元测试、标准代码格式、公共代码分层等等。今天,使用Maven的Archetype插件可以轻松实现此功能。从上图可以看出,实际使用这个插件机制就是几个简单的步骤:archetype:create-from-project,根据自己的项目代码生成原型项目,通过installand生成原型文件archetype:generate其他命令,并通过原型生成目标项目看起来挺简单的,但是你把玩网上找的资料你会发现,你生成的项目很傻,包括官方文档。我真的不明白他们为什么这么棒。一步两步。.就他妈的?有很多问题,比如模块名不会变,包名不会变,代码不会变,依赖报错也会有很多问题。中间怎么弄还是要讲的。创建Archetype首先准备好我们自己的模板工程,保证代码是OK的。进入项目根目录,执行命令:mvnarchetype:create-from-project,然后在项目根目录下会生成一个target文件夹。这很简单,不会有任何障碍。看下图,注意每个模块的名称。这是我修改的!!你应该发现他长得不是这个样子,问题就出在这里!然后继续阅读。这里的核心部分是如何修改target/generated-sources/src/main/resources/archetype-resources下的文件。如果继续不修改,最后生成的工程会发现模块的名字不会变,包的名字不会变,代码中引用的错误会一堆。接下来我们就看看怎么改吧,这一堆破题。修改父pom首先,找到根目录下的pom文件,会发现缺少模块信息,必须添加。${rootArtifactId}-client${rootArtifactId}-common${rootArtifactId}-service${rootArtifactId}-facade${rootArtifactId}-starter父pom依赖和引用的各个模块也要修改,groupId和artifactId按照我给的方法改,不要写死!!${groupId}${rootArtifactId}-客户端${project.version}……修改模块就是图中的问题。默认生成的模块可能是模板项目的名称。需要修改成类似__rootArtifactId__-client的东西。注意是双下划线。然后将模块中相互引用的groupId和artifactId按照父pom的方式进行对应的修改。Archetype-metadata修改找到META-INF/maven/archetype-metadata.xml文件,修改modules相关部分,注意id、dir、name的修改方式。src/main/java**/*.java......修改完成后,进入target/generated-sources/archetype目录,执行命令:mvninstall,顺便执行mvndeploy,上传到nexus。使用Archetype经过以上步骤,原型Archetype已经创建完成。其实最大的坑就是上面这部分。花了很长时间,这真是作弊。让我们看看如何使用它,有两种使用方法。命令行输入你要保存工程的路径,执行命令。mvnarchetype:generate-DarchetypeCatalog=local按照提示依次输入groupId和artifactId,完成创建。如何为他人使用?你本地的maven仓库目录(比如~/.m2/repository)有一个文件archetype-catalog.xml,分享给其他人就行了。com.exampletemplate-archetype1.0.0-SNAPSHOTExampleProjectIDEA新建项目,选择Maven,勾选Createfromarchetype,选择AddArchetype...Next,输入我们自定义Archetype的GroupId、ArtifactId和Version信息。添加成功后,我们可以在列表中看到自己的archetype,然后按照流程创建即可。