maven项目结构管理统一项目配置操作

一、maven分模块开发

Maven 分模块开发

1.先创建父工程,pom.xml文件中,打包方式为pom
2.然后里面有许多子工程

3.我要对父工程的maven对所有子工程进行操作

 

二、解读maven的结构

 1.模块1

  <groupId>org.TS</groupId>
  <artifactId>TruthSeer</artifactId>
  <packaging>pom</packaging>
  <version>1.0-SNAPSHOT</version>

 解读:

  1. <groupId>:这是项目的唯一标识符,通常是一个反向域名,用于在 Maven 仓库中唯一标识项目。在这里,org.TS 是项目的 Group ID。

  2. <artifactId>:这是项目的实际名称,用于在 Maven 仓库中唯一标识项目的构件(artifact)。在这里,TruthSeer 是项目的 Artifact ID。

  3. <packaging>:这是项目的打包类型。在 Maven 中,可以将项目打包成各种形式,例如 JAR、WAR 或者 POM。在这里,pom 表示该项目是一个聚合项目,只包含子模块,而不会生成实际的构件。

  4. <version>:这是项目的当前版本号。在这里,1.0-SNAPSHOT 表示项目处于开发阶段,并且尚未达到稳定版本。SNAPSHOT 版本表示正在积极开发中,可能会频繁地进行修改和发布。

 2.模块2

 

 <modules>
    <module>TS-common</module>
    <module>TS-feign-api</module>
    <module>TS-service</module>
    <module>TS-test</module>
    <module>TS-gateway</module>
    <module>TS-service/TS-others</module>
  </modules>

 解读:

<module> :表示项目中的一个子模块

3.模块3 

  <!-- 继承 Spring Boot 父工程 -->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.2</version>
  </parent>

解读:

 <parent> :指示该项目继承自 spring-boot-starter-parent

4.模块4:

<properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <elasticsearch.version>7.12.1</elasticsearch.version>
        <tencent.sdk.cos.version>5.6.89</tencent.sdk.cos.version>
        <tencent.sdk.vod.version>2.1.5</tencent.sdk.vod.version>
        <xxl-job-version>2.3.1</xxl-job-version>
        <seata-version>1.5.1</seata-version>
    </properties>

解读:

<properties> :定义的属性用于定义依赖项的版本和项目中其他可重复使用的值。

 5.模块5

<dependencyManagement>
        <dependencies>
            <!-- Spring Cloud 依赖包管理 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
    
        
            <dependency>
                <groupId>com.xuxueli</groupId>
                <artifactId>xxl-job-core</artifactId>
                <version>${xxl-job-version}</version>
            </dependency>

        </dependencies>
    </dependencyManagement>

解读:

<dependencyManagement>:在这个部分中,声明的依赖项并不会直接被项目使用,而是用于统一管理项目中所有模块的依赖版本。这样可以确保项目中各个模块使用相同版本的依赖,避免版本冲突和管理混乱。通常情况下,这里声明的依赖版本会被子模块继承并使用,但并不会实际引入依赖。 

6.模块6

  <dependencies>
        <!-- lombok 管理 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${org.projectlombok.version}</version>
        </dependency>
        <!--单元测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--开启bootstrap文件读取-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
    </dependencies>

解读:

 <dependencies>:这个部分中声明的依赖项是项目实际使用的依赖。这些依赖项会被直接引入到项目中,并在编译、运行时使用。这部分中声明的依赖不仅包括第三方库,还包括项目内部需要的模块或组件。用于声明使用的实际依赖

 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Maven项目管理工具,可以将一个完整的项目拆成一个一个模块进行开发,而一些比较通用的模块就可以作为公用组件。在其他项目中直接依赖使用,比如:公用的方法,权限组件等等。 一,新建一个简单的Maven工程,这个Maven工程只含一个pom文件,他是管理各个模块的级POM,如: Xml代码 <packaging>pom</packaging> <modules> <module>app-utils</module> <module>app-dao</module> <module>app-service</module> <module>app-web</module> </modules> <packaging>pom</packaging> <modules> <module>app-utils</module> <module>app-dao</module> <module>app-service</module> <module>app-web</module> </modules> packaging节点只能指定为pom,modules节点说明由几个模块组合,上面是把我们经常使用的架构分层模式分成一个个组件进行开发dao->service->web层。此pom文档经常还被用来进行一些依赖管理和插件管理,特别对于团队依赖包的管理特别重要,如下: Xml代码 <dependencyManagement> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> </dependencies> lt;/dependencyManagement> <dependencyManagement> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> </dependencies> </dependencyManagement> Xml代码 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> 二、新建各个模块,这里可以在本项目中建,也可以在外部建立,这要看具体的项目,一般公用组件最好建立成外部新项目,这样对于新的项目也是可以直接依赖的。 如上面的app-utils公用组件通用工具类包:packaging节点是jar,如下: Xml代码 <parent> <artifactId>app-parent</artifactId> <groupId>com.hyq</groupId> <version>1.0-SNAPSHOT</version> </parent> <groupId>com.hyq</groupId> <artifactId>app-utils</artifactId> <version>1.0-SNAPSHOT</version> <parent> <artifactId>app-parent</artifactId> <groupId>com.hyq</groupId> <version>1.0-SNAPSHOT</version> </parent> <groupId>com.hyq</groupId> <artifactId>app-utils</artifactId> <version>1.0-SNAPSHOT</version> 注意:这里是需有parent节点的,说明是继承app-parent来的,其他跟普通的pom一样配置。 app-dao,app-service跟app-utils一样。而app-web,由于这个的package是war包,所以项目中必须含有web.xml,就是标准的web目录结构了。 注意:上面的一些组件,是需要运行insall命令才可以运行的:mvn clean install 在团队开发中,可以建立自己公司的web项目级pom项目,然后每个项目都把这个pom作为级,有利于公司的统一依赖管理和插件管理
一、CacheCloud是做什么的CacheCloud提供一个Redis云管理平台:实现多种类型(Redis Standalone、Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现象、提供完善统计、监控、运维功能、减少开发人员的运维成本和误操作,提高机器的利用率,提供灵活的伸缩性,提供方便的接入客户端。二、CacheCloud提供哪些功能监控统计:  提供了机器、应用、实例下各个维度数据的监控和统计界面。一键开启:  Redis Standalone、Redis Sentinel、Redis Cluster三种类型的应用,无需手动配置初始化。Failover:  支持哨兵,集群的高可用模式。伸缩:        提供完善的垂直和水平在线伸缩功能。完善运维:    提供自动运维和简化运维操作功能,避免纯手工运维出错。方便的客户端:方便快捷的客户端接入。元数据管理:    提供机器、应用、实例、用户信息管理。流程化:      提供申请,运维,伸缩,修改等完善的处理流程三、CacheCloud解决什么问题1.部署成本       Redis多机(Redis-Sentinel, Redis-Cluster)部署和配置相对比较复杂,较容易出错。例如:100个redis数据节点组成的redis-cluster集群,如果单纯手工安装,既耗时又容易出错。2.实例碎片化       作为一个Redis管理员(可以看做redis DBA)需要帮助开发者管理上百个Redis-Cluster集群,分布在数百台机器上,人工维护成本很高,需要自动化运维工具。3. 监控、统计和管理不完善       一些开源的Redis监控和管理工具,例如:RedisLive(Python)、Redis Commander(Node.js),Redmon(Ruby)无论从功能的全面性(例如配置管理,支持Redis-Cluster等等)、扩展性很难 满足需求。4. 运维成本       Redis的使用者需要维护各自的Redis,但是用户可能更加善于使用Redis实现各种功能,但是没有足够的精力和经验维护Redis。 Redis的开发人员如同使用Mysql一样,不需要运维Mysql服务器,同样使用Redis服务,不要自己运维Redis,Redis由一些在Redis运维方面更有经验的人来维护(保证高可用,高扩展性),使得开发者更加关注于Redis使用本身。5. 伸缩性       本产品支持Redis最新的Redis-Sentinel、Redis-Cluster集群机构,既满足Redis高可用性、又能满足Redis的可扩展性,具有较强的容量和性能伸缩能力。6. 经济成本       机器利用率低,各个项目组的Redis较为分散的部署在各自服务器上,造成了大量闲置资源没有有效利用。7. 版本统一       各个项目的Redis使用各种不同的版本,不便于管理和交互。四、CacheCloud提供的价值规模化自动运维: 降低运维成本,降低人为操作出错率。自由伸缩:      提供灵活的伸缩性,应用扩容/收缩成本降低,机器资源得到重复利用。团队提升,开源贡献:提升云产品开发设计经验,自己作为开发者和使用者,Eating your own dog food。五、CacheCloud在搜狐的规模每天100 亿次命令调用2T 的内存空间800 个Redis实例100 台机器六、CacheCloud环境需求Java 7Maven 3MySQLRedis 3七、CacheCloud快速开始1、初始化数据库       导入项目中cachecloud.sql初始化库表结构。默认插入admin超级管理员2、CacheCloud项目配置       使用了maven作为项目构建的工具,提供了 local.properties和online.properties两套配置作为测试、线上的隔离。 属性配置说明:属性名说明示例cachecloud.db.urlmysql驱动urljdbc:mysql://127.0.0.1:3306/cache-cloudcachecloud.db.usermysql用户名admincachecloud.db.passwordmysql密码admincachecloud.machine.username服务器用户名,用于ssh${your machine username}cachecloud.machine.password服务器密码,用于ssh${your machine password}web.portspring-boot内嵌tomcat启动端口80803、启动cachecloud系统    mvn spring-boot:run1. 构建:mvn -Ponline clean package2. 上传war包到特定目录下:如/opt/cachecloud-web3: 拷贝项目中的cachecloud-web.conf配置到/opt/cachecloud-web目录下,注意必须跟war包同目录才生效4. 作为linux服务启动:sudo ln -s /opt/cachecloud-web/cachecloud-web-1.0-SNAPSHOT.war /etc/init.d/cachecloud-web  /etc/init.d/cachecloud-web start(9999是tomcat的端口号,具体要参考第三节中的online.properties和local.properties中的web.port4、添加机器(1). 运行脚本:cachecloud项目中的cachecloud-init.sh脚本是用来初始化服务器的cachecloud环境,主要工作如下:(a). 创建cachecloud项目用户:因为cachecloud项目的部分功能(redis启动、服务器监控)是通过ssh完成的,所以这里的用户和密码要和项目中的相对应,具体详见第三节。(b). 创建cachecloud项目的工作目录、数据目录、配置目录、日志目录、redis安装目录、临时目录等等。(/opt/cachecloud/data、/opt/cachecloud/conf、/opt/cachecloud/logs、/opt/cachecloud/redis、/tmp/cachecloud)(c). 安装最新的release版本的Redis(2). 脚本执行(a). 使用root登录目标服务器。(b). 将cachecloud-init.sh脚本拷贝到目标服务器当前用户目录下。(c). 执行 sh cachecloud-init.sh ${yourusername}(d). 两次确认密码(e). 一路安装直到成功。(3). 建议和警告(a). 请在root用户下执行初始化脚本,因为初始化脚本涉及到了用户的创建等较高的权限。(b). 出于安全的考虑,所选的机器最好不要有外网IP地址。(c). 用户名和密码最好不要用cachecloud, 密码尽可能复杂。(d). 机器的ssh端口最好是22。(e). 请确保/opt/有足够的硬盘空间,因为/opt/cachecloud/data要存储RDB和AOF的持久化文件,如果硬盘过小,会造成持久化失败。 (如果硬盘确实很小,建议建立一个软链接到/opt/cachecloud/data,且保证软链接的目录也是username用户,一定要保证/opt /cachecloud的目录结构)(f). 脚本中目前使用的是redis-3.0.6,如有需要请自行替换,建议使用3.0 release以后的版本。(4). 添加机器进入管理员界面(http://ip:port/manage/total/list),进入机器管理,点击添加机器,添加机器信息是开通应用的基础。 标签:CacheCloud  redis
### 回答1: Maven项目和Spring Boot项目是两个不同的概念,但它们之间存在一些联系。 首先,Maven是一个构建工具,它可以管理和构建项目的依赖关系。它使用pom.xml文件来定义项目结构和所需的依赖项。通过Maven,我们可以很方便地管理项目的构建、测试和部署过程。 而Spring Boot是一个用于快速构建基于Spring框架的应用程序的框架。它采用了约定优于配置的方式,简化了Spring应用的开发和部署。使用Spring Boot,我们可以更快地搭建一个Web应用,无需进行复杂的配置,即可快速启动一个独立可运行的应用。 所以,Maven项目和Spring Boot项目可以有不同的关系。一个项目可以同时使用Maven和Spring Boot,以利用Maven的依赖管理和构建功能,同时使用Spring Boot的简化配置和快速开发特性。 总结来说,Maven是一个用于管理和构建项目的工具,而Spring Boot是一个用于快速构建基于Spring框架的应用程序的框架。它们可以一起使用,以提高项目的开发效率和可维护性。 ### 回答2: Maven项目和Spring Boot项目是两种不同的项目类型,各自有着不同的特点和用途。 Maven是一种项目管理工具,主要用于管理和构建Java项目。它可以统一管理项目的依赖关系,并提供了一套标准的构建生命周期和插件机制。通过配置Maven的pom.xml文件,可以定义项目的依赖项、构建过程、打包方式等等。Maven的主要功能是建立项目的基础结构,并提供统一的构建管理。 Spring Boot是一种基于Spring框架的快速开发框架。它简化了Spring应用的初始化和配置过程,使程序员能够更加专注于业务逻辑的开发。Spring Boot内置了大量的默认配置,可以自动配置Spring应用所需的各种组件和功能。相对于传统的Spring项目,Spring Boot提供了一种更加简洁高效的开发方式,同时也能够减少代码配置量。 从功能角度来看,Maven主要用于项目的依赖管理和构建管理,它更侧重于项目的整体管理和构建过程;而Spring Boot则是一种开发框架,旨在提升开发效率和简化配置过程。它们在功能上有一定的重叠,但是着重点和使用方式是不同的。 总的来说,Maven是一种项目管理工具,用于构建和管理Java项目的依赖关系;Spring Boot是一种用于快速开发Spring应用的框架。可以说,Maven项目是一个基础框架,而Spring Boot项目则是在这个基础上进行开发的应用程序。 ### 回答3: Maven项目和Spring Boot项目是两种不同的项目类型,二者在目标和功能上有以下几点区别: 1. 目标:Maven项目的主要目标是管理和构建项目,它主要关注项目结构、依赖关系和构建过程。而Spring Boot项目则是基于Spring框架的快速开发框架,旨在简化Spring应用程序的开发和部署。 2. 构建方式:Maven项目使用Maven构建工具进行构建和管理,通过pom.xml文件指定项目的依赖和配置。而Spring Boot项目则内嵌了一个嵌入式的Tomcat服务器,可以直接运行一个可执行的JAR包,无需额外的部署配置。 3. 配置方式:Maven项目配置主要集中在pom.xml文件中,包括项目的依赖、插件和构建配置。而Spring Boot项目则采用约定大于配置的方式,通过一些默认配置和自动化配置,可以大大简化项目配置工作。 4. 依赖管理Maven项目使用Maven的依赖管理机制,可以很方便地管理和引用外部依赖。而Spring Boot项目则内置了许多常用的依赖库和框架,可以简化依赖的引入和版本管理。 5. 开发方式:Maven项目的开发方式相对更为自由,可以选择使用任意的开发框架和工具。而Spring Boot项目则为开发者提供了一种更加规范和标准化的方式,建议使用Spring框架相关的技术进行开发。 综上所述,Maven项目主要关注项目的构建和管理,而Spring Boot项目则是一种快速开发框架,旨在简化Spring应用程序的开发和部署。二者有不同的目标、构建方式、配置方式和依赖管理方式。根据具体的需求和场景,开发者可以选择使用适合的项目类型来进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值