手把手maven-archetype 模板工程构建并发布远端仓库

目录

1.定义期望的模板工程(依托此工程构建archetype模板工程)

2.生成对应的archetype工程(真正的模板工程,每次新建工程使用)

3. 新建工程(依托archetype模板工程,新建业务工程)

过程问题

4.发布到远端(发布到远端,可结合git-ci等工具构建自动化)


1.定义期望的模板工程(依托此工程构建archetype模板工程)

  1. 按照自己的业务基于常见的代码架构,整理模板工程建立合适的目录结构,可以通过idea工具快速生成标准的maven工程

  2. 工程名称例如: myproject,目录内容如下(此目录结构只是示例):

$ tree -L 3
.
|-- README.md
|-- images
|   `-- matrix.png
|-- pom.xml
|-- springboot-flink.iml
`-- src
    `-- main
        |-- java
        `-- resources
​
5 directories, 4 files

2.生成对应的archetype工程(真正的模板工程,每次新建工程使用)

maven通过archetype工程来作为母版

myproject 工程根目录运行:

mvn clean archetype:create-from-project -Dmaven.test.skip --setings maven-setings文件

生成的目录示例- 此目录在 target/generated-sources/archetype 目录下,依据此目录新建工程, 新建一个工程myproject-archetype,如下

|-- README.md
|-- images
|   `-- matrix.png
|-- pom.xml   ①
|-- springboot-flink-archetype.iml
`-- src       ②
    |-- main
    |   `-- resources
    |       |-- META-INF
    |       |   `-- maven
    |       |       `-- archetype-metadata.xml
    |       `-- archetype-resources
    |           |-- README.md
    |           |-- images
    |           |   `-- matrix.png
    |           |-- pom.xml
    |           `-- src
    |               `-- main
    |                   |-- java
    |                   `-- resources
    `-- test
        `-- resources
            `-- projects
                `-- basic
                    |-- archetype.properties
                    `-- goal.txt

注释

  1. pom.xml: 此pom的packag类型为维持 <packaging>maven-archetype</packaging>,注意非1小节中myproject工程根目录的pom,而是原工程myproject编译后 target/generated-sources/archetype 地址的pom;大致内容如下

    <groupId>XXXX</groupId>
      <artifactId>XXXX-archetype</artifactId>
      <version>XXXX-SNAPSHOT</version>
      <packaging>maven-archetype</packaging> <!-- 此类型不要动!!-->
    ​
      <name>XXXX-archetype</name>
    ​
      <build>
        <extensions>
          <extension>
            <groupId>org.apache.maven.archetype</groupId>
            <artifactId>archetype-packaging</artifactId>
            <version>3.2.1</version>
          </extension>
        </extensions>
    ​
        <pluginManagement>
          <plugins>
            <plugin>
              <artifactId>maven-archetype-plugin</artifactId>
              <version>3.2.1</version>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    ​
      <description>基于XXXXX</description>

  2. src目录: 此目录是原始工程myproject target/class下生成的目录结构,不要动直接占到新的工程中

3. 新建工程(依托archetype模板工程,新建业务工程)

  1. 模板工程安装到本地maven仓库mvn install

  2. 根据自己的模板新建工程: 命令如下图

mvn archetype:generate 
-DarchetypeGroupId=******   # 模板工程的groupID
-DarchetypeArtifactId=****** # 模板工程的artifactID
-DinteractiveMode=false  
-DarchetypeVersion=***** # 目标工程的版本
-DgroupId=***** # 目标工程groupID
-DartifactId=*****  # 目标工程的artifactID

过程问题

  1. 依据新的archetype新建工程可能会卡住报如下错误:

[DEBUG]Searching for remote catalog:http://repo1.maven.org/maven2/archetype-catalog.xml

原因:此问题为 本地配置的maven镜像地址下载超时;

解决方案: 1. 更改为国内镜像或者自己的私服即可 2.手动下载或者google下有很多解法挑一个即可

   2. 新建工程时候目录必须为空或者目录内不能存在pom文件

4.发布到远端(发布到远端,可结合git-ci等工具构建自动化)

  1. 更新pom文件: 定义远端仓库

    <groupId>XXXX</groupId>
      <artifactId>XXXX-archetype</artifactId>
      <version>XXXX-SNAPSHOT</version>
      <packaging>maven-archetype</packaging>
    ​
      <name>XXXX-archetype</name>
    ​
      <build>
        <extensions>
          <extension>
            <groupId>org.apache.maven.archetype</groupId>
            <artifactId>archetype-packaging</artifactId>
            <version>3.2.1</version>
          </extension>
        </extensions>
    ​
        <pluginManagement>
          <plugins>
            <plugin>
              <artifactId>maven-archetype-plugin</artifactId>
              <version>3.2.1</version>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    ​
      <description>基于XXXXX</description>
    ​
    <!-- 新增远端发布地址-->
      <distributionManagement>
        <snapshotRepository>
          <id>snapshots</id>
          <name>XXn-snapshot</name>
          <url>XXX/</url>
        </snapshotRepository>
        <repository>
          <id>central</id>
          <name>XXX-release</name>
          <url>XXX/</url>
        </repository>
    ​
      </distributionManagement>

  2. 发布操作: mvn deploy:  此处可以结合CI工具构建自动化发布,对模板工程改动直接发布到远端仓库

    mvn clean -Dusername=${USER} -Dpassword=${PASSWORD} deploy -T 8   -Dcheckstyle.skip=false
  3. 发布2如果构建自动化,需要在对应的CI中制作maven、jdk等环境,用来编译此arhetype工程

此处有现成的docker 镜像,需要可私

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boundary边界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值