Maven ArcheType Plugin

maven-archetype-plugin是maven内置的插件,可以使用原型(archetype)搭建项目。

通常我们创建一个使用maven结构的java项目,需要编写pom文件,并且创建一些目录src/main/java src/main/resource src/test/java,还需要编写一些java文件或者配置。不同的项目添加的pom不同,需要增加的配置也不一样。

这个插件有三个主要的goal

archetype:create-from-project 把当前项目创建成原型

archetype:jar 把原型项目打包成jar

archetype:generate 根据原型项目搭建项目,也就是最常用的功能

功能如下图

Maven Archetype Plugin Overview

下面我们实战一下,三个任务:

  • 创建一个项目,转换成原型
  • 把原型项目转换成jar,并上传上center repositry
  • 使用原型搭建项目

创建基本项目

第一步,创建一个maven项目在

quickstart-jdk8

http://github.com/shalk/arche...

第二步,准备原型的配置文件

在同一级目录

quickstart-jdk8.properties

archetype.groupId=com.xshalk.archetypes
archetype.artifactId=quickstart-jdk8
archetype.version=1.0.0

# archetype.filteredExtensions=java
archetype.languages=java

#an_additional_property=my specific value

执行如下命令,生成原型,到目录 target/generated-sources/archetype

cd quickstart-jdk8
mvn archetype:create-from-project -Darchetype.properties=../quickstart-jdk8.properties

进入原型目录,打包成jar,并保存到本地仓库

cd target/generated-sources/archetype
mvn install

也可以使用 archetype:jar 直接生成jar

mvn archetype:jar

上传到center repositry

sonatype公司管理着一个开放的中央仓库,只要把自己的包传上去,在其他能联网的地方就能直接使用了。

主要分三个步骤

  1. 去sonatype的jira ,注册并申请groupId,等待通过。
  2. 修改pom.xml,增加签名,javadoc,source等
  3. 进行发布,snapshot、release
  4. 登录sonatype的nexus后台,点击release

这个步骤的细节都比较多,可以参考 这里 或者 部分官方文档

最后发布成功

<!-- https://mvnrepository.com/artifact/com.github.shalk/archetype-quickstart-jdk8 -->
<dependency>
    <groupId>com.github.shalk</groupId>
    <artifactId>archetype-quickstart-jdk8</artifactId>
    <version>1.0.0</version>
</dependency>

创建新项目

mvn archetype:generate -DarchetypeGroupId=com.github.shalk  -DarchetypeArtifactId=archetype-quickstart-jdk8 -DarchetypeVersion=1.0.0 -DgroupId=<my.groupid>  -DartifactId=<my-artifactId>


mvn archetype:generate -B -DarchetypeGroupId=com.github.shalk  -DarchetypeArtifactId=archetype-quickstart-jdk8 -DarchetypeVersion=1.0.0 -DgroupId=com.test  -DartifactId=app1 -Dversion=1.0.0-SNAPSHOT

参考

https://maven.apache.org/arch...

https://maven.apache.org/guid...

https://blog.csdn.net/ssrc060...


程序员杰诺斯
15 声望1 粉丝

« 上一篇
go语言sync.Cond