自定义模板工程原理:利用maven插件archetype,将源工程生成为archetype工程,即模板工程,生成模板工程的过程中将指定字符串或文件名替换为占位符,然后将这个模板工程发布到本地仓库或私服仓库,就可以在创建工程的时候引用这个模板工程,给占位符赋值,生成新的工程,主要以下三步:
1,根据源工程生成模板工程:
mvn archetype:create-from-project
2,发布模板工程:
mvn clean install 或 mvn clean deploy
3,根据模板工程创建新工程:
archetype:generate -DarchetypeGroupId="..." -archetypeArtifactId="..." -DarchetypeVersion="..."
具体步骤如下:
一、准备好源工程,在pom.xml里配置archetype插件,指定archetype.properties配置文件,yml文件默认不会替换占位符,需要用archetypeFilteredExtentions标签配置表示替换,如果还有其它的,用逗号分隔;
二、在源工程根目录下创建配置文件archetype.properties,根据需要设置属性,在这里我自定义一个属性customProperty=Abc;
三、然后在根目录下运行mvn archetype:create-from-project命令,运行成功后,在target/generated-sources下会生成一个archetype项目,项目内容如下图。
1.可以看到包路径没有了,这是因为默认有个属性package=包路径没有分支的最深路径,即在这个项目里package=com.archetypedemo.www如果想自定义,可以在前面的archetype.properties里指定package的值。
2.原来的Abc.java文件名被替换为__customProperty__.java,aaaAbc.xml被替换为aaa__customProperty__.xml;
3.文件内容里得Abc字符串全被替换为${customProperty};
4.archetype-metadata.xml则是配置描述,里面可以看到我们自定义的属性customProperty,默认值是Abc,可以把defaultValue这个标签删掉,后面新建工程的时候自己指定,也可以不删;
四、在archetype目录下打开cmd,运行mvn clean install或mvn clean deploy,发布到本地或私服,发布到私服需要在archetype的pom里添加私服deploy配置,配置方法自行度娘,发布成功后,则可以根据这个发布的GAV创建新工程了,发布后得模板工程GAV可以在archetype工程的pom.xml里查看,也可以在发布时的打印信息里看到;
五、在需要创建新工程的目录下打开cmd,运行archetype:generate -DarchetypeGroupId=”…” -archetypeArtifactId=”…” -DarchetypeVersion=”…”,省略号是模板工程的GAV,然后会要求我们输入GAV和自定义属性的值,最后确认回车,就会生成新的工程。如果自定义属性在第三步的archetype-metadata.xml中设置了默认值,这里会直接设置成默认值跳过输入,如果想修改的话,可以在最后确认的那一步,输入N回车,则会让我们重新输入所有属性值。
分别输入值,由于之前archetype-metadata.xml里没有把customProperty的默认值删掉,这里直接赋值为Abc跳过了,想要修改的话,在最后一步Y确认的地方输N拒绝,则重新输入所有字段的值;
最后看我们生成的工程,模板工程的占位符都已替换为我们创建工程时指定的值了