最近在修改自己项目的结构,然后尝试了用maven archetypes 生成项目模板,没什么大坑,记录一下手顺,给年纪大的自己备忘。
参考网站:
maven archetype 官方介绍
archetype插件
构建archetype发布到私服
1.创建模板
首先准备一个模板项目,就是比方说,你已经准备好了一些文件,写法啥的。在项目的pom.xml中添加 <distributionManagement>
用于发布时候用
<distributionManagement>
<repository>
<id>【setting.xml中配配置的servers里的serverId】</id>
<name>【名字】</name>
<url>【serverId对应的repository URL】</url>
</repository>
<snapshotRepository>
<id>【同理】</id>
<name>【同理】</name>
<url>【同理】</url>
</snapshotRepository>
</distributionManagement>
在pom.xml同级目录下,使用mvn archetype:create-from-project
对该项目生成模板。这个会对你现在的项目生成一个archetype目录树,在target/generated-sources/archetype
下。
如果是多模块的项目,就在根目录下的pom.xml添加上面的配置,并且在根目录下调用mvn archetype:create-from-project
。
archetype生成完成之后,我们就可以对原型进行调整了,和你的基础项目不搭噶了。generated-sources/archetype
目录下的src文件下就是原型文件,原型文件里的一些值是通过参数传入的,可以修改,也可以在archetype-metadata.xml
中指定(这样就是设定默认值,比方说修改默认version)。有一点要提醒的是,在这个目录下的pom.xml中,最好也添加刚刚添加的<distributionManagement>
,在使用archetype的时候会用到。另外一点,目录generated-sources\archetype\src\main\resources\META-INF\maven
下的archetype-metadata.xml
可以通过修改配置来生成模块(多模块)和文件,具体配置可以看一下官网archetype-metadata.xml
2. 发布模板到本地/私服
弄好自己的模板后,在生成的原型根目录下,执行mvn install
将模板原型安装到本地目录,如果是要发布到私服,先前配置好了的情况下,可以直接用mvn deploy
发布。
3. 使用模板
使用发布好的模板,调用mvn archetype:generate
属性参数参考这里,提一下的是, archetypeCatalog 参数,如果是3.0.0以上的版本,参数指定的是 'local','remote','internal',以下的版本(2.4)可以指定repository url。官网中提到,使用remote的时候,一定要配置对应的 repository,先前的配置就是为这儿用的。默认是使用remote,local,remote找不到时候,就找本地maven库中的模板。
使用mvn archetype:generate
会先让你选择需要使用的模板,再进行构建,如果指定 archetypeGroupId ,archetypeArtifactId archetypeVersion参数值,就可以直接指定使用的模板了。
4.一些问题
问题:在mvn archetype:create-from-project报错,Invoker process ended with result different than 0!
解决: 应该在报错信息中看到一段话The specified user settings file does not exist: /Users/XXX/.m2/settings.xml
把settings.xml放到.m2目录下就行了。
问题:无法找到私服上的发布的原型。
解决: 查看自己的server和repository配置,一定要对得上。不对就不行。
问题: 通过原型生成出来项目中的的pom.xml文件里多了好多空白行
解决:可能是操作系统编码的问题。我在windows上创建的本地模板就有空白行,发布到nexus后,使用远端的模板就没出现这个问题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。