maven-archetype多模块创建以及使用

1,008 阅读3分钟

1. 什么是Maven Archetype

In short, Archetype is a Maven project templating toolkit. An archetype is defined as an original pattern or model from which all other things of the same kind are made. The name fits as we are trying to provide a system that provides a consistent means of generating Maven projects. Archetype will help authors create Maven project templates for users, and provides users with the means to generate parameterized versions of those project templates.

简而言之,Archetype是Maven项目模板工具箱。 原型定义为原始的图案或模型,可制成所有其他同类的东西。 这个名称正好适合我们试图提供一个提供生成Maven项目的一致方法的系统。 原型将帮助作者为用户创建Maven项目模板,并为用户提供生成这些项目模板的参数化版本的方法。

2.如何生成Maven Archetype

1.首先有一个可以运行的项目 通过mvn archetype:create-from-project 生成一个项目原型模板

mvn archetype:create-from-project

2.将会生成一个target文件 (以下的target文件是经过我的修改的)

image.png

3.因为是多模块的文档,需要手动修改一些位置

①模块名需要修改为 rootArtifactId-xxx

__rootArtifactId__-xxx

②src/main/resources/META-INF/maven下的文件archetype-metadata.xml是项目原型的描述文件

image.png

需要手动修改id 、dir、 name.

id="${rootArtifactId}-xxx" dir="__rootArtifactId__-xxx" name="${rootArtifactId}-xxx"

module属性说明如下:

id: 定义子模块工程artifactId

dir: 子模块工程源文件在archetype-resources里对应的文件夹名称,可自定义如__rootArtifactId__-xxx

name: 子模块工程名称

③ 需要在src/main/resources/META-INF/maven/archetype-metadata.xml文件中添加以下内容

<requiredProperties>
    <requiredProperty key="groupId"/>
    <requiredProperty key="artifactId"/>
    <requiredProperty key="version">
        <defaultValue>1.0.0</defaultValue>
    </requiredProperty>
</requiredProperties>

④需要在src/main/resources/META-INF/maven/archetype-metadata.xml文件中选择修改fileSet

image.png fileSet 属性标签指定的哪些文件需要纳入原型中,不需要的删掉。

filtered 属性标签表示是否替换文件中的占位符,若为true则会替换,否则不会,所以我们如果想要占位符最后会被替换为项目相关的信息,还需要通过这个标签指定。

packaged 属性标签指定文件是否在项目的包里面,true或false,true来进行自动创建且包名同groupId, 比如package为com.company.test,那么如果该属性为true,则对应的java文件会放到com/company/test文件夹下,也就是包路径下。

当时yml文件的filtered是默认false的,一直很奇怪为啥yml文件占位符起不了作用,就是整个filtered需要设置为true。

⑤cd 到../target/generated-sources/archetype目录 执行mvn clean install

mvn clean install

⑥此时你的maven 仓库将会生成archetype-catalog.xml文件 里面会生成Archetype模板的骨架信息,在后面新建项目将会用上。

image.png

该骨架信息可以在.../target/generated-sources/archetype/pom.xml中定义

image.png

此时maven Archetype原型已成功创建。

⑦发到私服

修改.../target/generated-sources/archetype/pom.xml文件添加配置

<distributionManagement>  
        <repository>  
            <id>releases</id>  
            <name>xxx</name>  
            <url>http://xxxx/nexus/content/repositories/releases/</url>  
        </repository>  
        <snapshotRepository>  
            <id>snapshots</id>  
            <name>xxx</name>  
            <url>http:/xxxx/nexus/content/repositories/snapshots/</url>  
        </snapshotRepository>  
</distributionManagement>  

然后执行以下命令

mvn archetype:crawl
mvn deploy

3.如何创建新项目

①通过IDEA直接创建

image.png 这里的信息要与archetype-catalog.xml文件中的GroupId,ArtifactId,Version一一对应。

create就创建成功了。

②通过命令行创建

mvn archetype:generate 
-DgroupId=com.company 
-DartifactId=test 
-Dversion=1.0.0 
-Dpackage=com.company.test 
-DarchetypeGroupId=com.company.adp  
-DarchetypeArtifactId=company-archetype  
-DarchetypeVersion=1.0.0 
-DinteractiveMode=false 
-DarchetypeCatalog=local 
-X  

-DarchetypeCatalog=local,代表从本地仓库创建项目
-DarchetypeRepository=私服地址,代表从私服创建项目

image.png

java包结构定义一般是com.组织名称.项目名称,所以一般人为设置为group.+ artifact = package

i18n中文文件 显示中文

image.png