有了AI之后我一天要上三五个服务。自建项目模板 Maven archetype 减轻工作量

年关将至,大家都很焦虑。老板焦虑最近用户付费数据怎么越来越不行了。

运营焦虑老板把用户付费数据不行这个帽子扣自己身上。

产品焦虑老板把用户付费数据不行这个帽子扣自己身上。

开发焦虑老板把用户付费数据不行这个帽子扣自己身上。

测试焦虑老板把用户付费数据不行这个帽子扣自己身上。

总之,大家都焦虑。作为一个在职海沉浮许久的开发,为了不让老板看向我。我给的答案是:多上十几二十个服务。

当老板处于正要开口让我背锅之前,已经在脑子里面酝酿好"你自己提离职,公司不追究你的责任"之前。我们率先出击,和他说我今年多上线了三五十服务。

一方面告诉他,我干的可不少。另一方面也是一种威慑:如果离了我,这三五十个烫手山芋谁来接?

为了多上服务,我就得整一个模版工程。虽然可以手动改,但我改了几个之后发现太特么麻烦了。

程序员怎么能吃得了这种手动干活的苦?毕竟一个 2 分钟可以干完的活,我都想花 5 分钟写个脚本自动化。

问就是高级,如果我手动干了,那怎么显示出来我是开发,我是一个坎普特训练师?

本来以前还可以用一个程序装一下,但是被你们这群爱装逼的人用多了。现在广大老板都知道了,也包括我的老板。

于是为了继续装逼,不是。是为了自动化这部分工作,我打算又写一个项目仓库用来存放模板代码。(嘿嘿,属于我的仓库+1)

那接下来就盘一下怎么做一个 maven archetype。

首先你要有一个Java开发环境,然后你要有一个模板工程,如果想大家一起用还需要有一个 maven 仓库。

步骤大概是这样的: 第一步:打开电脑 第二步:选择一部 第三步:把手放在➡️键上 第四步:另一只手...咳咳

好像不太对,贤者时间应该是这样: 第一步:准备一个正常的工程模板 第二步:引入 maven 插件生成模板 第三步:把生成的项目复制出来改一下 第四步:打包 第五步:上传到远程库(如果自娱自乐这一步就不用了)

第一步:准备正常的工程模板

自己准备去

第二步:引入 maven 插件生成模板

先引入扩展,可以通过项目生成样板项目

xml 复制代码
<extension>
    <groupId>org.apache.maven.archetype</groupId>
    <artifactId>archetype-packaging</artifactId>
    <version>3.4.1</version>
</extension>

执行命令后,就会在 target 目录中生成一个样板项目

shell 复制代码
mvn archetype:create-from-project

把 target/generated-sources/ 目录下的样板项目复制出来,单独作为一个项目来修改维护。

第三部:三上 样板项目信息自定义

现在虽然已经生成了一个项目,如果想用是可以直接用的。如果有一些特殊的需求,则需要自己修改 archetype-metadata.xml 文件。

archetype-metadata.xml 文件中最重要的是 <fileSets> 这个标签的内容。

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor ...>
  <fileSets>
    <fileSet filtered="true" encoding="UTF-8">
      <directory>.circleci</directory>
      <includes>
        <include>config.yml</include>
      </includes>
    </fileSet>
    <fileSet encoding="UTF-8">
      <includes>
        <include>.gitignore</include>
        <include>README.md</include>
      </includes>
    </fileSet>
    ...
  </fileSets>
  <modules>
    <module id="app" dir="app" name="app">
      <fileSets>
        <fileSet filtered="true" packaged="true" encoding="UTF-8">
          <directory>src/main/java</directory>
          <includes>
            <include>**/*.java</include>
              <include>**/pom.xml</include>
          </includes>
        </fileSet>
        <fileSet encoding="UTF-8">
          <directory>src/main/resources</directory>
          <includes>
            <include>**/*.yml</include>
          </includes>
        </fileSet>
        <fileSet filtered="true" packaged="true" encoding="UTF-8">
          <directory>src/test/java</directory>
          <includes>
            <include>**/*.java</include>
          </includes>
        </fileSet>
        ...
      </fileSets>
    </module>
    <module id="controller" dir="controller" name="controller">
      <fileSets>
        <fileSet filtered="true" packaged="true" encoding="UTF-8">
          <directory>src/main/java</directory>
          <includes>
            <include>**/*.java</include>
            <include>**/pom.xml</include>
          </includes>
        </fileSet>
      </fileSets>
    </module>
    ...
  </modules>
</archetype-descriptor>

这个文件中定义了要管理哪些文件夹和文件,就是要从 archetype-resources 中复制哪些文件夹和文件。

如果需要使用参数替换,就要添加 filtered="true" 就可以直接在文件中写变量,使用模板生成的时候就会自动替换。

变量通常有 ${groupId}${artifactId}${version}

.idea.claude 这种目录不想在生成项目的时候也生成,直接删掉样板代码中的目录,或者是修改 archetype-metadata.xml

第四步:打包

shell 复制代码
mvn clean install

打包完之后,本地 Maven 仓库就会多出一个项目包。这个项目包里面就有些乱七八糟的文件,jar文件、pom文件等等等等。

powershell 复制代码
PS ...\repository\com\xxx\archetype\xxx-archetype> tree /F /A
.
|-- maven-metadata-local.xml
|-- maven-metadata-yuan-nexus-releases.xml
|-- resolver-status.properties
\---1.2
    |-- felo-archetype-1.2.jar
    |-- felo-archetype-1.2.pom
    |-- _remote.repositories

既然本地有了包,那就可以直接使用了。

shell 复制代码
# 这里只是进入工作目录,不需要进入项目目录
cd workspace

# 通过模板项目生成项目,会自动生成项目根目录
mvn archetype:generate

生成项目的过程会自动进入交互模式:

  • 先根据提示输入项目模板对应的编号
  • 在按照提示输入项目信息:
    • groupId:组ID
    • artifactId:项目名
    • version:版本号
    • package:项目包名

第五步:上传到远程库

如果自娱自乐这一步就不用了,到上一步已经可以正常使用。

如果你像我一样精益求精、坚持不懈、勇往无前还貌若潘安。

那么可以把这个项目打包完上传到远程仓库,以供需要的人使用。

第一步:先在项目的 pom.xml 中配置上仓库的地址

xml 复制代码
<distributionManagement>
	<repository>
		<id>nexus-releases</id>
		<name>Team Nexus Repository</name>
		<url>https://nexus.xxx.com/repository/maven-releases/</url>
		<layout>default</layout>
		<releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
			<enabled>false</enabled>
		</snapshots>
	</repository>
	<snapshotRepository>
		<id>nexus-snapshots</id>
		<name>Team Nexus Repository Snapshots</name>
		<url>https://nexus.xxx.com/repository/maven-snapshots/</url>
		<layout>default</layout>
		<releases>
			<enabled>false</enabled>
		</releases>
		<snapshots>
			<enabled>true</enabled>
			<updatePolicy>always</updatePolicy>
		</snapshots>
	</snapshotRepository>
</distributionManagement>

第二步:在 maven settings.xml 中配置上认证用的用户名密码

xml 复制代码
<servers>
	<server>
		<id>nexus-releases</id>
		<username>xxx</username>
		<password>xxxxxxxx</password>
	</server>
	<server>
		<id>nexus-snapshots</id>
		<username>xxx</username>
		<password>xxxxxxxxx</password>
	</server>
</servers>

第三步:执行 deploy 命令上传jar到远程仓库

shell 复制代码
mvn clean deploy

然后获取到 catalog 配置文件地址,一般是这样的URL:

nexus.xxx.com/repository/...

第四步:在 IDEA 中使用

相关推荐
我家领养了个白胖胖1 小时前
arthas 我愿称为最强辅助工具
java·后端
muxin-始终如一1 小时前
Semaphore 使用及原理详解
java·开发语言·python
无风之翼1 小时前
android12下拉菜单栏界面上方显示无内容
android·java
程序员梁白开1 小时前
从源码到实战:线程池处理任务的完整流程解析
java·jvm·spring·java-ee
u***1372 小时前
Tomcat的升级
java·tomcat
t***p9352 小时前
springboot项目读取 resources 目录下的文件的9种方式
java·spring boot·后端
C***11502 小时前
Tomcat下载,安装,配置终极版(2024)
java·tomcat
ScriptBIN2 小时前
Maven高级
java·maven