Pom构建Springboot父子项目详解(1)

1、首先创建springboot父子模块项目
构建父模块时选择maven pom即可,生成的项目没有src,在父项目目录下创建子模块,子模块选择maven project ,生成的是包含规范目录的文件,子模块的group前缀是父模块名字,artifact是子模块的名字。
在这里插入图片描述
2、创建好之后将子模块作为modules放进父pom文件里
子模块的parent换成父项目的版本
3、引入依赖:在创建项目时我什么依赖都没选择添加,此时默认的依赖有:
spring-boot-starter和spring-boot-starter-test
构建方式是:spring-boot-maven-plugin
在这里看下都需要加些什么

  1. 项目打包方式,默认父项目:<packaging>pom</packaging> ,子项目<packaging>jar</packaging> 打包后是直接可java -jar运行的jar文件 ,<packaging>war</packaging>这种需要部署到tomcat 的bin/webapp下
  2. 现在启动会启动成功 但是很快结束 因为没有添加web的启动依赖,在要启动的模块加上spring-boot-starter-web即可,这就是一个雏形项目,下一步可以设置配置文件分环境配置,为实现各种功能:自定义扩展依赖、自定义打包方式、自定义构建方式、部署方式、远程仓库、镜像位置、快照存储等多了去了。申请一台服务器、创建数据库、安装nginx、设置端口访问、上传前后端代码文件即可作为一个小型开发者项目
    进入正题:pom文件该怎么添加,怎么设置构建方式,不同的身设置方法起到什么样的效果

Pom标签作用详解

1、放在父项目中的

  • <dependencyManagement>:子项目的默认依赖信息。这部分依赖写在在父项目中但是不会被立刻引进子项目,只有子项目中指明了要用里面的某个依赖(必须添加group ID和artifact ID信息)才会真正的被引进去,子项目中可以不用指明版本,会默认使用父项目dependencyManagement标签中的版本,这个一般适用于做版本控制 保持项目中所有使用这个依赖的子项目版本一致。

  • <build>

    • <resources> :这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。
      • <targetPath></targetPath> 资源放到非源目录的配置位置(不常用)
      • <resource></resource>这个元素描述了项目相关或测试相关的所有资源路径
      • <filtering></filtering>是否使用参数值代替参数名。参数值取自properties元素或者文件 里配置的属性,文件在filters元素里列出,里面是true或者false
      • <directory></directory>描述存放资源的目录,该路径相对POM路径
      • <includes><include></include> </includes>包含的模式列表,例如**/*.xml
      • <excludes><exclude></exclude></excludes>排除的模式列表,例如**/*.xml
        在这里插入图片描述
  • <plugins></plugins>:使用的插件列表

    • <plugin></plugin>:使用的插件的详细信息
    •       <groupId></groupId> 
            <!-- 插件在仓库里的artifact ID --> 
            <artifactId></artifactId> 
            <!-- 被使用的插件的版本(或版本范围) --> 
            <version></version> 
           这三项要有,确定引入的是哪个插件
      
  • <extensions>true/false</extensions>是否从该插件下载Maven扩展(例如打包和类型处理器),由于性能原因,只有在真需要下载时,该元素才被设置成enabled

  • <executions>...<executions>在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置

  • <execution>一组插件的阶段信息写在这里,其中包含的元素:

  •                      <id></id>
                         <!-- 绑定了目标的构建生命周期阶段,如果省略,目标会被绑定到源数据里配置的默认阶段 --> 
                         <phase></phase>
                         <!-- 配置的执行目标 --> 
                         <goals>repackage</goals> 
    
                         <!-- 配置是否被传播到子POM --> 
                         <inherited>true/false</inherited> 
    
                         <!-- 作为DOM对象的配置 --> 
                         <configuration></configuration>
    

    在这里插入图片描述
    有一个实际应用是用不同的环境,将文件打包成不同名称的jar包有个很重要的标签叫profiles

  • <profiles>

  • <profile>

  •         <!-- 构建配置的唯一标识符。即用于命令行激活,也用于在继承时合并具有相同标识符的profile。 --> 
              <id></id>
         <!-- 自动触发profile的条件逻辑。Activation是profile的开启钥匙。profile的力量来自于它能够
              在某些特定的环境中自动使用某些特定的值;这些环境通过activation元素指定。activation元
              素并不是激活profile的唯一方式。 --> <activation> 
             <!-- profile默认是否激活的标志 --> 
             <activeByDefault>true/false</activeByDefault> 
             <!-- 当匹配的jdk被检测到,profile被激活。例如,1.4激活JDK1.4,1.4.0_2,而!1.4激活所有版本
                  不是以1.4开头的JDK。 --> 
             <jdk>jdk版本,如:1.7</jdk> 
             <!-- 当匹配的操作系统属性被检测到,profile被激活。os元素可以定义一些操作系统相关的属性。 --> 
             <os> 
                 <!-- 激活profile的操作系统的名字 --> 
                 <name> Windows XP </name> 
                 <!-- 激活profile的操作系统所属家族(如 'windows') --> 
                 <family> Windows </family> 
                 <!-- 激活profile的操作系统体系结构 --> 
                 <arch> x86 </arch> 
                 <!-- 激活profile的操作系统版本 --> 
                 <version> 5.1.2600 </version> 
             </os> 
             <!-- 如果Maven检测到某一个属性(其值可以在POM中通过${名称}引用),其拥有对应的名称和值,Profile
                  就会被激活。如果值字段是空的,那么存在属性名称字段就会激活profile,否则按区分大小写方式匹
                  配属性值字段 --> 
             <property> 
                 <!-- 激活profile的属性的名称 --> 
                 <name> mavenVersion </name> 
                 <!-- 激活profile的属性的值 --> 
                 <value> 2.0.3 </value> 
             </property> 
             <!-- 提供一个文件名,通过检测该文件的存在或不存在来激活profile。missing检查文件是否存在,如果不存在则激活 
                  profile。另一方面,exists则会检查文件是否存在,如果存在则激活profile。 --> 
             <file> 
                 <!-- 如果指定的文件存在,则激活profile。 --> 
                 <exists> /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </exists> 
    
                 <!-- 如果指定的文件不存在,则激活profile。 --> 
                 <missing> /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </missing> 
             </file> 
         </activation> 
    

在这里插入图片描述
打包时加上时间戳可以这样配置:在这里插入图片描述

上面的一些配置信息不需要都写,这样子就能实现在什么环境打出来的包和环境名称一致了

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐