[Maven进阶]属性与版本管理

网友投稿 289 2022-09-05

[Maven进阶]属性与版本管理

文章目录

​​属性​​

​​问题引入​​​​解决步骤​​

​​步骤1:父工程中定义属性​​​​步骤2:修改依赖的version​​

​​配置文件加载属性​​

​​步骤1:父工程定义属性​​​​步骤2:jdbc.properties文件中引用属性​​​​步骤3:设置maven过滤文件范围​​​​步骤4:测试是否生效​​

​​版本管理​​

属性

问题引入

前面我们已经在父工程中的dependencyManagement标签中对项目中所使用的jar包版本进行了统一的管理,但是如果在标签中有如下的内容:

解决步骤

步骤1:父工程中定义属性

5.2.10.RELEASE 4.12 1.3.0

步骤2:修改依赖的version

org.springframework spring-core ${spring.version} org.springframework spring-webmvc ${spring.version} org.springframework spring-jdbc ${spring.version}

此时,我们只需要更新父工程中properties标签中所维护的jar包版本,所有子项目中的版本也就跟着更新。当然除了将spring相关版本进行维护,我们可以将其他的jar包版本也进行抽取,这样就可以对项目中所有jar包的版本进行统一维护,如:

5.2.10.RELEASE 4.12 1.3.0

配置文件加载属性

Maven中的属性我们已经介绍过了,现在也已经能够通过Maven来集中管理Maven中依赖jar包的版本。但是又有新的需求,就是想让Maven对于属性的管理范围能更大些,比如我们之前项目中的​​jdbc.properties​​,这个配置文件中的属性,能不能也来让Maven进行管理呢?

答案是肯定的,具体的实现步骤为:

步骤1:父工程定义属性

jdbc:mysql://127.1.1.1:3306/ssm_db

步骤2:jdbc.properties文件中引用属性

在jdbc.properties,将jdbc.url的值直接获取Maven配置的属性

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=${jdbc.url}jdbc.username=rootjdbc.password=***********

步骤3:设置maven过滤文件范围

Maven在默认情况下是从当前项目的​​src\main\resources​​下读取文件进行打包。现在我们需要打包的资源文件是在maven_02_ssm下,需要我们通过配置来指定下具体的资源目录。

../maven_02_ssm/src/main/resources true

说明:directory路径前要添加​​../​​的原因是maven_02_ssm相对于父工程的pom.xml路径是在其上一层的目录中,所以需要添加。

修改完后,注意maven_02_ssm项目的resources目录就多了些东西,如下:

步骤4:测试是否生效

测试的时候,只需要将maven_02_ssm项目进行打包,然后观察打包结果中最终生成的内容是否为Maven中配置的内容。

上面的属性管理就已经完成,但是有一个问题没有解决,因为不只是maven_02_ssm项目需要有属性被父工程管理,如果有多个项目需要配置,该如何实现呢?

方式一:

../maven_02_ssm/src/main/resources true ../maven_03_pojo/src/main/resources true ...

可以配,但是如果项目够多的话,这个配置也是比较繁琐

方式二:

${project.basedir}/src/main/resources true

说明:打包的过程中如果报如下错误:

原因就是Maven发现你的项目为web项目,就会去找web项目的入口web.xml[配置文件配置的方式],发现没有找到,就会报错。

解决方案1:在maven_02_ssm项目的​​src\main\webapp\WEB-INF\​​添加一个web.xml文件

解决方案2: 配置maven打包war时,忽略web.xml检查

org.apache.maven.plugins maven-war-plugin 3.2.3 false

上面我们所使用的都是Maven的自定义属性,除了${project.basedir},它属于Maven的内置系统属性。

在Maven中的属性分为:

自定义属性(常用)内置属性Setting属性Java系统属性环境变量属性

具体如何查看这些属性:

在cmd命令行中输入​​mvn help:system​​

具体使用,就是使用 ​​${key}​​​来获取,key为等号左边的,值为等号右边的,比如获取红线的值,对应的写法为 ​​${java.runtime.name}​​。

版本管理

关于这个版本管理解决的问题是,在Maven创建项目和引用别人项目的时候,我们都看到过如下内容:

这里面有两个单词,SNAPSHOT和RELEASE,它们所代表的含义是什么呢?

我们打开Maven仓库地址​​https://mvnrepository.com/​​

在我们jar包的版本定义中,有两个工程版本用的比较多:

SNAPSHOT(快照版本)

项目开发过程中临时输出的版本,称为快照版本快照版本会随着开发的进展不断更新

RELEASE(发布版本)

项目开发到一定阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构件文件是稳定的即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本

除了上面的工程版本,我们还经常能看到一些发布版本:

alpha版:内测版,bug多不稳定内部版本不断添加新功能beta版:公测版,不稳定(比alpha稳定些),bug相对较多不断添加新功能纯数字版

对于这些版本,大家只需要简单认识下即可。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:[MyBatisPlus]DML编程控制①(多记录操作、逻辑删除)
下一篇:猿大侠:等了3年!iPhone 13这功能又凉了……!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~