目录
1.定义期望的模板工程(依托此工程构建archetype模板工程)
2.生成对应的archetype工程(真正的模板工程,每次新建工程使用)
3. 新建工程(依托archetype模板工程,新建业务工程)
4.发布到远端(发布到远端,可结合git-ci等工具构建自动化)
1.定义期望的模板工程(依托此工程构建archetype模板工程)
-
按照自己的业务基于常见的代码架构,整理模板工程建立合适的目录结构,可以通过idea工具快速生成标准的maven工程
-
工程名称例如: 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
注释
-
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>
-
src目录: 此目录是原始工程
myproject
target/class下生成的目录结构,不要动直接占到新的工程中
3. 新建工程(依托archetype模板工程,新建业务工程)
-
模板工程安装到本地maven仓库
:mvn install
-
根据自己的模板新建工程: 命令如下图
mvn archetype:generate
-DarchetypeGroupId=****** # 模板工程的groupID
-DarchetypeArtifactId=****** # 模板工程的artifactID
-DinteractiveMode=false
-DarchetypeVersion=***** # 目标工程的版本
-DgroupId=***** # 目标工程groupID
-DartifactId=***** # 目标工程的artifactID
过程问题
-
依据新的archetype新建工程可能会卡住报如下错误:
[DEBUG]Searching for remote catalog:http://repo1.maven.org/maven2/archetype-catalog.xml
原因:此问题为 本地配置的maven镜像地址下载超时;
解决方案: 1. 更改为国内镜像或者自己的私服即可 2.手动下载或者google下有很多解法挑一个即可
2. 新建工程时候目录必须为空或者目录内不能存在pom文件
4.发布到远端(发布到远端,可结合git-ci等工具构建自动化)
-
更新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>
-
发布操作: mvn deploy: 此处可以结合CI工具构建自动化发布,对模板工程改动直接发布到远端仓库
mvn clean -Dusername=${USER} -Dpassword=${PASSWORD} deploy -T 8 -Dcheckstyle.skip=false
-
发布2如果构建自动化,需要在对应的CI中制作maven、jdk等环境,用来编译此arhetype工程
此处有现成的docker 镜像,需要可私