使用Maven Archetype创建Java项目模板

简介:

使用Maven Archetype创建Java项目模板

1.over view
简而言之,Archetype是一个Maven项目模板工具包。原型被定义为一种原始的模式或模型,所有其他同类的东西都是从中产生的。当我们试图提供一个提供生成Maven项目的一致方法的系统时,这个名字就合适了。Archetype将帮助作者为用户创建Maven项目模板,并为用户提供生成这些项目模板的参数化版本的方法。

使用原型提供了一种很好的方法,可以与您的项目或组织所采用的最佳实践一致的方式快速地使开发人员受益。您可能希望在组织内部实现J2EE开发的标准化,因此您可能希望提供EJB,WAR或Web服务的原型。一旦创建了这些原型并将其部署在组织的存储库中,组织中的所有开发人员就可以使用它们。

2.do it
⚠️:我们将使用springboot项目来演示如何生成一个maven archetype(原型),本文中(模板)(原型)交替使用,二者意思相同。

示例,我们有一个现成的项目,其结构如下:

.
├── Dockerfile
├── README.md
├── last-demo.iml
├── mvnw
├── mvnw.cmd
├── pom.xml
├── src
   ├── main
   │   ├── java
   │   │   └── com
   │   │   └── demo
   │   │   └── data
   │   │   ├── Application.java
   │   │   └── your_business_package
   │   │   ├── client
   │   │   │   └── DemoClient.java
   │   │   ├── constants
   │   │   │   └── YourBusinessConstants.java
   │   │   ├── enumerate
   │   │   │   └── DemoStatus.java
   │   │   ├── presistence
   │   │   │   ├── DemoRepository.java
   │   │   │   └── entity
   │   │   │   └── DemoDO.java
   │   │   ├── service
   │   │   │   └── DemoService.java
   │   │   └── web
   │   │   ├── dto
   │   │   │   └── DemoDTO.java
   │   │   └── rest
   │   │   └── DemoController.java
   │   └── resources
   │   ├── application.yml
   │   └── logback-spring.xml
   └── test
   ├── java
   │   └── com
   │   └── demo
   │   └── data
   │   └── ApplicationTests.java
   └── resources
   └── application.yml
我们将使用maven archetype来创建以该项目为基础的模板。

2.1 生成模板文件夹
执行以下maven命令:

mvn archetype:create-from-project
此时项目中会生成target/generated-sources/archetype文件夹,其中存放的就是我们的模板相关文件。

2.2 自定义模板
探索target/generated-sources/archetype我们可以得知:

generated-sources

└── archetype
    ├── pom.xml
    ├── src
    │   ├── main
    │   │   └── resources
    │   │       ├── META-INF
    │   │       │   └── maven
    │   │       │       └── archetype-metadata.xml ##⚠️原型描述符,描述了我们原型的结构
    │   │       └── archetype-resources ##⚠️经过maven转换后的项目文件包
    │   └── test
    │       └── resources
    │           └── projects
    │               └── basic
    └── target
        ├── classes
        │   └── archetype-resources
        ├── your_project_name.jar
        └── test-classes
            └── projects
                └── basic

我们随机打开一个archetype-resources中的源文件,可以看到如下:

上图中我们看到的${package}占位符,这个就是maven原型插件自动处理的结果,到时候我们根据原型生成项目的时候,这些占位符就会变成我们新生成项目的相关的值。类似,maven还提供了groupId,artifactId, version等关键字。如果我们项目中有其他地方也需要这种定制化,我们可以手动进行更改。

例如我们把项目配置文件改为如下(应用名用占位符代替),目的是实现项目的名称随新建的项目变动。

接下来来分析archetype-metadata.xml,他是原型描述符号,我们可以指定那些文件进入原型里,那些文件需要排除,还能指定上面说的占位符需不需要被替换 等等。

如下为archetype-metadata.xml示例:

<?xml version="1.0" encoding="UTF-8"?>

<fileSet filtered="true" packaged="true" encoding="UTF-8">
  <directory>src/main/java</directory>
  <includes>
    <include>**/*.java</include>
  </includes>
</fileSet>
<fileSet filtered="true" encoding="UTF-8">
  <directory>src/main/resources</directory>
  <includes>
    <include>**/*.xml</include>
  </includes>
</fileSet>
<fileSet filtered="true" encoding="UTF-8">
  <directory>src/main/resources</directory>
  <includes>
    <include>**/*.yml</include>
  </includes>
</fileSet>
<!--下面还有更多项-->

⚠️:fileSet属性标签指定的那些文件需要纳入原型中,我们把不需要的删掉。

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

⚠️:packaged属性标签指定文件是否在项目的包里面,true或false。

2.3 生成模板(原型)
我们进入target/generated-sources/archetype目录,执行以下命令:

mvn install
此时模板将在我们本地生成。

2.4 使用模板(原型)生成新项目
我们使用以下命令:

mvn archetype:generate \
-DarchetypeCatalog=local \
-DgroupId=新建项目的groupId \
-DartifactId=新建项目的artifactId \
-DarchetypeGroupId=你的原型group \
-DarchetypeArtifactId=你的原型项目名字-archetype \
-DarchetypeVersion=你的原型版本 \
-DinteractiveMode=false
之后,我们会生成新项目。项目的结构符合我们的原型结构。查看我们手动指定的application.yml

可以看到我们的占位符被我们项目的相关信息给替换了。

2.5 将模板上传至maven仓库
我们进入target/generated-sources/archetype目录,打开pom.xml

添加仓库信息:

<repository>
    <id>my-releases</id>
    <url>你的仓库地址</url>
</repository>
<snapshotRepository>
    <id>my-snapshots</id>
    <url>你的仓库地址</url>
</snapshotRepository>


<server>
    <id>my-snapshots</id>
    <username>对应仓库的username</username>
    <password>对应仓库的password</password>
</server>
<server>
    <id>my-releases</id>
    <username>对应仓库的username</username>
    <password>对应仓库的password</password>
</server>


随后指定如下命令:

mvn deploy
随后,原型将被上传至你的mavne仓库。

3.summary
本文我们介绍的maven的原型及其特性带来的好处,并且我们演示了如何生成一个原型,并且利用原型来创建一个新项目。

原文地址https://www.cnblogs.com/dongxishaonian/p/12706023.html

相关文章
|
10天前
|
Java Maven
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
|
6天前
|
存储 Java BI
java怎么统计每个项目下的每个类别的数据
通过本文,我们详细介绍了如何在Java中统计每个项目下的每个类别的数据,包括数据模型设计、数据存储和统计方法。通过定义 `Category`和 `Project`类,并使用 `ProjectManager`类进行管理,可以轻松实现项目和类别的数据统计。希望本文能够帮助您理解和实现类似的统计需求。
42 17
|
28天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
126 26
|
2月前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
65 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
2月前
|
Java
Java项目中高精度数值计算:为何BigDecimal优于Double
在Java项目开发中,涉及金额计算、面积计算等高精度数值操作时,应选择 `BigDecimal` 而非 `Double`。`BigDecimal` 提供任意精度的小数运算、多种舍入模式和良好的可读性,确保计算结果的准确性和可靠性。例如,在金额计算中,`BigDecimal` 可以精确到小数点后两位,而 `Double` 可能因精度问题导致结果不准确。
|
5月前
|
Java Maven
解决idea每次新建maven项目都需要重新配置maven的问题
解决idea每次新建maven项目都需要重新配置maven的问题
215 1
|
2月前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
200 8
|
2月前
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
181 3
|
3月前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
230 1
Maven——创建 Spring Boot项目
|
3月前
|
Java 关系型数据库 MySQL
如何使用 maven 创建一个 Spring Boot项目
Maven 是一个强大的项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,提高开发效率。其核心功能包括项目构建和依赖管理。项目构建支持编译、测试、打包和发布等流程,而依赖管理则通过中央仓库、本地仓库和私有服务器获取和管理项目依赖。示例中展示了如何创建第一个 SpringBoot 项目并实现简单接口。
65 1
如何使用 maven 创建一个 Spring Boot项目