Maven使用${env.}调用环境变量

知识查缺补漏, 遇到之前忽略的,就记下来。

最近开始接手做一些老项目,老到什么程度,回到十几年前,大学刚毕业, 使用 java servlet 的时候。 页面渲染可能还没有开始用 jsp。 看起来项目后来用 maven 改造过。经历过这些项目的,都是阅读过各种源代码,技能扎实,有故事的人。

项目中有一个引用,也是让我研究了半天,不是一小会的那个半天,而是从中午到下午,到第二天早上才解决的那种。暴露了技能上的弱点,就记下来,积累起来当做经验

pom 文件定义了 weblogic 中依赖的 jar 包

<dependency>
  <groupId>WLS</groupId>
  <artifactId>org.glassfish.jersey.core.jersey-server</artifactId>
  <version>1.0</version>
  <scope>system</scope>
  <systemPath>${env.AS_HOME}/oracle_common/modules/org.glassfish.jersey.core.jersey-server.jar</systemPath>
</dependency>

看到在这个依赖中,使用<systemPath>定义了 jar 包的本地系统路径。而且在路径当中引用了环境变量${env.AS_HOME}.

因为平时这样使用的机会比较少,学习 maven 的时间太久了,这些细碎的知识点忘记了。在 Intellij Idea 当中,maven install 不过,提示找不到 jar 包的路径。

第一个想法 ,到本地机器找找,记得以前安装过 weblogic 了, 看看在 weblogic 安装路径下,确实有这个 jar 包存在,直接把${env.AS_HOME}这里改成绝对路径。 OK, 问题解决,可以 build 下去了。

但想想, 这些代码在测试和生产环境使用 CICD 工具,是可以构建成功的,说明这个代码没问题。所以产生了第二个想法

${env.AS_HOME}, 看起来是环境变量, 那在环境变量当中添加一个。

重启 Intellij idea, maven install, 失败,找不到这个 jar 包。

心里一直在打鼓,一直想知道, maven 是怎样加载环境变量的? maven 支持使用环境变量吗?如果不支持,这个变量在哪里设置的?Profile 里?setting.xml 哪个位置?

先在网上找找,确定是否支持环境变量。

在文章https://www.cnblogs.com/bravetian/p/12497180.html 中介绍了 maven 的六类属性

  1. 内置属性, 如${basedir}, ${version}等
  2. Pom 属性,在 pom 文件中定义的元素,如${project.build.sourceDirectory}, ${project.version}等
  3. 自定义属性, 用户在 pom 文件的 properties 中定义的 Maven 属性
  4. Settings 属性, 用户使用 settings.开头属性引用 setting.xml 文件中 xml 元素的值
  5. Java 系统属性, 所有 Java 系统属性都可以使用 Maven 属性引用
  6. 环境变量属性, 所有环境变量都可以使用以 env.开头的 Maven 属性引用

能够看到,Maven 支持环境变量属性,使用 env.开头,引用环境变量。这样看来,我的环境变量定义错了,修改环境变量

重启 intellij idea, 跑 Maven install, 成功

回头想想,一方面存在技术债,没有留意这些实现细节,另外自己思考的问题,没有注意 env.开头是个环境变量。

记录下来,积累,共勉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

威赞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值