网站制作应该注意到的问题,扁平化设计网站,加强政务公开网站建设,培训学校网站属性
在这一章节内容中#xff0c;我们将学习两个内容#xff0c;分别是
属性版本管理
属性中会继续解决分模块开发项目存在的问题#xff0c;版本管理主要是认识下当前主流的版本定义方式。
4.1 属性
4.1.1 问题分析
讲解内容之前#xff0c;我们还是先来分析问题: …属性
在这一章节内容中我们将学习两个内容分别是
属性版本管理
属性中会继续解决分模块开发项目存在的问题版本管理主要是认识下当前主流的版本定义方式。
4.1 属性
4.1.1 问题分析
讲解内容之前我们还是先来分析问题:
前面我们已经在父工程中的dependencyManagement标签中对项目中所使用的jar包版本进行了统一的管理但是如果在标签中有如下的内容: 你会发现如果我们现在想更新Spring的版本你会发现我们依然需要更新多个jar包的版本这样的话还是有可能出现漏改导致程序出问题而且改起来也是比较麻烦。
问题清楚后我们需要解决的话就可以参考咱们java基础所学习的变量声明一个变量在其他地方使用该变量当变量的值发生变化后所有使用变量的地方就会跟着修改即: 4.1.2 解决步骤
步骤1:父工程中定义属性
propertiesspring.version5.2.10.RELEASE/spring.versionjunit.version4.12/junit.versionmybatis-spring.version1.3.0/mybatis-spring.version
/properties步骤2:修改依赖的version
dependencygroupIdorg.springframework/groupIdartifactIdspring-core/artifactIdversion${spring.version}/version
/dependency
dependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion${spring.version}/version
/dependency
dependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion${spring.version}/version
/dependency此时我们只需要更新父工程中properties标签中所维护的jar包版本所有子项目中的版本也就跟着更新。当然除了将spring相关版本进行维护我们可以将其他的jar包版本也进行抽取这样就可以对项目中所有jar包的版本进行统一维护如:
!--定义属性--
propertiesspring.version5.2.10.RELEASE/spring.versionjunit.version4.12/junit.versionmybatis-spring.version1.3.0/mybatis-spring.version
/properties4.2 配置文件加载属性
Maven中的属性我们已经介绍过了现在也已经能够通过Maven来集中管理Maven中依赖jar包的版本。但是又有新的需求就是想让Maven对于属性的管理范围能更大些比如我们之前项目中的jdbc.properties这个配置文件中的属性能不能也来让Maven进行管理呢?
答案是肯定的具体的实现步骤为:
步骤1:父工程定义属性
propertiesjdbc.urljdbc:mysql://127.1.1.1:3306/ssm_db/jdbc.url
/properties步骤2:jdbc.properties文件中引用属性
在jdbc.properties将jdbc.url的值直接获取Maven配置的属性
jdbc.drivercom.mysql.jdbc.Driver
jdbc.url${jdbc.url}
jdbc.usernameroot
jdbc.passwordroot步骤3:设置maven过滤文件范围
Maven在默认情况下是从当前项目的src\main\resources下读取文件进行打包。现在我们需要打包的资源文件是在maven_02_ssm下,需要我们通过配置来指定下具体的资源目录。
buildresources!--设置资源目录--resourcedirectory../maven_02_ssm/src/main/resources/directory!--设置能够解析${}默认是false --filteringtrue/filtering/resource/resources
/build**说明:**directory路径前要添加../的原因是maven_02_ssm相对于父工程的pom.xml路径是在其上一层的目录中所以需要添加。
修改完后注意maven_02_ssm项目的resources目录就多了些东西如下: 步骤4:测试是否生效
测试的时候只需要将maven_02_ssm项目进行打包然后观察打包结果中最终生成的内容是否为Maven中配置的内容。 上面的属性管理就已经完成但是有一个问题没有解决因为不只是maven_02_ssm项目需要有属性被父工程管理如果有多个项目需要配置该如何实现呢?
方式一:
buildresources!--设置资源目录并设置能够解析${}--resourcedirectory../maven_02_ssm/src/main/resources/directoryfilteringtrue/filtering/resourceresourcedirectory../maven_03_pojo/src/main/resources/directoryfilteringtrue/filtering/resource.../resources
/build可以配但是如果项目够多的话这个配置也是比较繁琐
方式二:
buildresources!--${project.basedir}: 当前项目所在目录,子项目继承了父项目相当于所有的子项目都添加了资源目录的过滤--resourcedirectory${project.basedir}/src/main/resources/directoryfilteringtrue/filtering/resource/resources
/build**说明:**打包的过程中如果报如下错误: 原因就是Maven发现你的项目为web项目就会去找web项目的入口web.xml[配置文件配置的方式]发现没有找到就会报错。
解决方案1在maven_02_ssm项目的src\main\webapp\WEB-INF\添加一个web.xml文件
?xml version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsdversion3.1
/web-app解决方案2: 配置maven打包war时忽略web.xml检查
buildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-war-plugin/artifactIdversion3.2.3/versionconfigurationfailOnMissingWebXmlfalse/failOnMissingWebXml/configuration/plugin/plugins
/build上面我们所使用的都是Maven的自定义属性除了${project.basedir},它属于Maven的内置系统属性。
在Maven中的属性分为:
自定义属性常用内置属性Setting属性Java系统属性环境变量属性 具体如何查看这些属性:
在cmd命令行中输入mvn help:system 具体使用就是使用 ${key}来获取key为等号左边的值为等号右边的比如获取红线的值对应的写法为 ${java.runtime.name}。
4.3 版本管理
关于这个版本管理解决的问题是在Maven创建项目和引用别人项目的时候我们都看到过如下内容: 这里面有两个单词SNAPSHOT和RELEASE它们所代表的含义是什么呢?
我们打开Maven仓库地址https://mvnrepository.com/ 在我们jar包的版本定义中有两个工程版本用的比较多:
SNAPSHOT快照版本 项目开发过程中临时输出的版本称为快照版本快照版本会随着开发的进展不断更新 RELEASE发布版本 项目开发到一定阶段里程碑后向团队外部发布较为稳定的版本这种版本所对应的构件文件是稳定的即便进行功能的后续开发也不会改变当前发布版本内容这种版本称为发布版本
除了上面的工程版本我们还经常能看到一些发布版本:
alpha版:内测版bug多不稳定内部版本不断添加新功能beta版:公测版不稳定(比alpha稳定些)bug相对较多不断添加新功能纯数字版
对于这些版本大家只需要简单认识下即可。