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
在这里看下都需要加些什么
- 项目打包方式,默认父项目:
<packaging>pom</packaging>
,子项目<packaging>jar</packaging>
打包后是直接可java -jar运行的jar文件 ,<packaging>war</packaging>
这种需要部署到tomcat 的bin/webapp下 - 现在启动会启动成功 但是很快结束 因为没有添加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>
打包时加上时间戳可以这样配置:
上面的一些配置信息不需要都写,这样子就能实现在什么环境打出来的包和环境名称一致了