2

Maven多Module自定义archetype

 2 years ago
source link: https://perkins4j2.github.io/posts/72500/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Maven多Module自定义archetype

发表于

2020-10-09

| 分类于 工具利器

| 阅读次数: 342

本文字数: 3.7k

|

阅读时长 ≈ 3 分钟

创建archetype项目

创建Parent

  • 利用IDEA创建骨架项目,名称例如archetype-all
  • Pom
     <artifactId>archetype-all</artifactId>
    <packaging>pom</packaging>
    <version>1.0.0-SNAPSHOT</version>
    <build>
    <extensions>
    <extension>
    <groupId>org.apache.maven.archetype</groupId>
    <artifactId>archetype-packaging</artifactId>
    <version>3.2.0</version>
    </extension>
    </extensions>

    <pluginManagement>
    <plugins>
    <plugin>
    <artifactId>maven-archetype-plugin</artifactId>
    <version>3.2.0</version>
    </plugin>
    </plugins>
    </pluginManagement>
    </build>
  • 可添加骨架自定义的目录文件等,例如.ignore等

    创建多Module

  • 名称如archetype-common、archetype-processor、archetype-provider
  • 各module创建目录,包括源、资源、测试、数据等
  • 各模块添加骨架文件,例config、util、主入口文件等
  • clean install,检查包冲突和异常等
  • 运行调试,保障项目运行正常

当前项目根目录下,执行mvn archetype:create-from-project

进入target/generated-sources/archetype目录,即为利用当前项目生成骨架结果。

修改骨架名称pom.xml
artifactId和name,默认会加archetype,可调整。

调整多模块骨架名称

进入target/generated-sources/archetype/src/main/resources/archetype-resources/

修改module的目录名称
rootArtifactId-common
rootArtifactId-processor
rootArtifactId-provider

确认.ignore等文件是否包含,没有的话手动添加。

Parent Pom添加多modules

<modules>
<module>${rootArtifactId}-common</module>
<module>${rootArtifactId}-processor</module>
<module>${rootArtifactId}-provider</module>
</modules>

Parent Pom添加多modules依赖

<dependency>
<groupId>xxx</groupId>
<artifactId>${rootArtifactId}-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>xxx</groupId>
<artifactId>${rootArtifactId}-processor</artifactId>
<version>${project.version}</version>
</dependency>

确认子module Pom的artifactId名称

<artifactId>${artifactId}</artifactId>
<packaging>jar</packaging>

修改子module Pom的依赖module artifactId名称

<artifactId>${rootArtifactId}-common</artifactId>
<artifactId>${rootArtifactId}-processor</artifactId>

修改archetype-metadata.xml配置,位于arget/generated-sources/archetype/src/main/resources/META-INF/,替换样例:

<module id="${rootArtifactId}-module1" dir="__rootArtifactId__-module1" name="${rootArtifactId}-module1">

安装和测试骨架

骨架目录target/generated-sources/archetype/
执行mvn install安装到本地

测试,执行mvn archetype:generate -DarchetypeCatalog=local,选择骨架和生产项目信息

部署:
mvn deploy

命令行测试:

mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate -Dfilter=archetype-all -DarchetypeCatalog=http://xx.xxx.com/nexus/content/repositories/releases/

自定义包名称

pom.xml头部添加:

#set ($artifactId = "${artifactId}")
#set ($index = $artifactId.indexOf('.'))
#if ($index < 0)
#set ($appName = $artifactId)
#else
#set ($index = $index + 1)
#set ($appName = $artifactId.substring($index))
#end
#set ($appPackage = "${groupId}." + $appName)

取artifactId得后半部分赋值给appName变量, archetype-metadata.xml中添加:

<requiredProperty key="appName">
<defaultValue>${appName}</defaultValue>
</requiredProperty>

<requiredProperty key="appPackage">
<defaultValue>${appPackage}</defaultValue>
</requiredProperty>

修改目录名为:
src/main/resources/xx/appName/

移除本地 自定义 archetype

~/.IntelliJIdea2016.2/system/Maven/Indices/UserArchetypes.xml

------ 本文结束------

本文标题:Maven多Module自定义archetype

文章作者:Perkins

发布时间:2020年10月09日

原始链接:https://perkins4j2.github.io/posts/72500/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK