前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >老是要创建模块,又是只能拷贝目录了?

老是要创建模块,又是只能拷贝目录了?

作者头像
用户8902830
发布2022-09-22 11:17:49
3730
发布2022-09-22 11:17:49
举报
文章被收录于专栏:CodeNone

各位小伙伴们在刚学java的时候是怎样创建spring项目的呢,有些小伙伴是使用的Spring Initializer自动生成项目结构,有些小伙伴是创建一个空的maven项目,然后自己配置对应的dependencies来创建项目。但是无论哪种方式,都无法达到我们一些定制化的需求,比如创建完整的目录结构。此时就需要一个模版,当我们每次创建这个模版对应的maven项目的时候就创建一样的目录结构,有着一样的依赖。这个模版就依赖于今天要讲的maven archetype。

maven archetype分单模块和多模块构建,这个主要是对应了第一次搭建工程的时候需要一些多模块,也对应了项目稍微成熟后需要多模块的操作,老套路,写前先贴官网介绍。

单模块

有两种方式创建单模块任务,一种是手动创建,只有大怨种才会通过手动创建去整叭,哪有人这么傻呢,哦,原来是我

当然如果有同学特别想去尝试下手动创建是什么感觉,也可以通过下文中通过代码自动生成的目录结构自己手动敲一遍,这些都是小问题。这里主要也是说如何自动生成archetype。

编写模版

首先先编写代码模版,也就是通用的目录结构及配置文件等,这里是模拟了

这应该也是我们初学或者项目比较小的时侯的经典分层,我就不想每次去创建工程的时候都要手动去整一遍,就想通过简单的命令行或者选择下就能创建出来,让我更多关注代码本身。

  • 一个主启动类
  • controller层
  • dao层
  • model(entity)层
  • service层
  • 公共util层
  • spring的配置文件,mybatis的mapper文件

生成archetype

模版已经有了,接下来就是生成模版,可以看到现在工程下面只有pom文件和src文件,很是简单。

在和src同级的目录下使用命令行mvn archetype:create-from-project

注意第三个红圈,翻译过来就是Archetype工程在/root/markdown/md/ArcheType/mavenarchetype/target/generated-sources/archetype被创建了,其实就是编译到了target目录,先去我们的工程(注意,是工程,不是archetype工程)看一眼

可以看到标红的就是我们的archetype工程了,切到这个目录(也就是外部工程的targe/generated-sources下的archetype工程),为了方便使用tree命令去观看,我把archetype工程的target目录给删掉

有眼尖的小伙伴可能已经发现了,不是说好是模版吗,那为什么那些controller,service层都不见了,先保留着疑问,接着往下看,如果非要这些模块,可以在这些层下面随便添加一个文件占位

部署archetype

把archetype工程移到自定义目录下,并且采取clean install

其实到这里后就能使用了,因为maven在找包的时候会先去找本地仓库,如果只是给自己用的话完全就够了,而如果是需要分享给团队的其他同学甚至是所有人,就需要部署到远程服务器中了。对于远程部署而言大体有两种方式,一是远程服务器,二是开源仓库。对于前者而言,下载个nexus实在是

所以本篇文章主要讲部署到gitee中,首先需要在gitee中创建一个公开的仓库,接着把这个仓库克隆到本地(这里就举例保存到/root/remote-test)。然后修改archetype工程中的pom文件,添加

代码语言:javascript
复制
<distributionManagement>
      <repository>
         <id>remote-gitee</id>
         <url>file:/root/remote-test</url>
      </repository>
</distributionManagement>

注意上面的url就是git克隆的位置,接着运行mvn deploy

切到git克隆的目录,把刚才deploy的东西全都push到gitee中,其实就是把整个目录deploy就完事了。

使用archetype

要想使用archetype的话,命令行如下:mvn archetype:generate -DartifactId=my-project-create-from-archetype -DgroupId=com.huawei.cutey.none -DarchetypeArtifactId=mavenarchetype-archetype -DarchetypeGroupId=com.cutey.study.maven

maven中的-D是代表属性的意思,其中artifactId/groupId是要创建项目的属性,archetypeArtifactId/archetypeGroupId是archetype的属性。

上面能够创建出来完全是因为在本地的maven仓库里面install了,如果把本地仓库中的删除掉就会发现失败了,这种情况下就借助上一步中的deploy了(还记得我们是部署到了gitee中嘛)

首先需要配置maven的settings.xml,用户级别的配置默认在{user.home}/.m2/settings.xml ,全局级别的配置文件默认在{maven.conf}/settings.xml 。在<profiles> 下的<profile>下的<repositories>下添加

代码语言:javascript
复制
<repository>
    <id>【自定义】</id>
    <name>【自定义】</name>
    <url>https://gitee.com/【gitee用户名】/【gitee仓库名】/raw/【gitee分支】</url>
</repository>

如果只是想运行下demo,可以直接使用我的配置

代码语言:javascript
复制
<repository>
    <id>remote-repositry</id>
    <name>Repository for gitee repository</name>
    <url>https://gitee.com/cutey_none/remote-repositry/raw/master</url>
</repository>

因为仓库的标签是profile的子标签,也就是跟profile绑定的,所以得激活这个配置文件才能使用这个仓库

代码语言:javascript
复制
<activeProfiles>
    <activeProfile>【profile中id标签的值】</activeProfile>
</activeProfiles>

紧接着还是运行这个命令行即可mvn archetype:generate -DartifactId=my-project-create-from-archetype -DgroupId=com.huawei.cutey.none -DarchetypeArtifactId=mavenarchetype-archetype -DarchetypeGroupId=com.cutey.study.maven

多模块

以上只是单模块的模版构建,现在中型项目大都是多模块工程,maven同样也支持把多模块作为archetype工程。一样先来看下整个模版的目录结构,具体里面的子模块目录我就取了默认的,这里也可以不关注它,主要聚焦于多模块

接着和上面的套路是一样的,mvn archetype:create-from-project ,然后就在target目录下能看到

如果需求就可以修改下archetype工程目录下面的pom文件,基本的配置就是groupId和artifactId,因为我们在创建模版工程的时候也是要通过坐标去找。

紧接着还是一样,在archetype工程的根目录(可以直接进到该目录也可以把整个archetype工程拷出来)执行命令行

mvn archetype:generate -DartifactId=my-multiproject -DgroupId=com.huawei.cutey.none -DarchetypeArtifactId=multiarchetype -DarchetypeGroupId=com.cutey.study.multi.archetype

可以看到三个模块都已经自己创建出来了

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 咖啡编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 单模块
  • 多模块
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档