AEM配置如何读取ENV值 配置env参数取值来源查询
AEM 配置路径中 env 段的读取逻辑与定义位置
首先明确核心结论:config.author.test/config.author.stage这类路径里的test/stage也就是你说的env值,不是AEM原生预置的标准运行模式,属于部署时自定义传入的自定义运行模式,它的值不是从OSGi配置里读取的,反过来它是用来决定哪份OSGi配置生效的匹配条件。
常见认知误区说明
- AEM的OSGi配置文件夹命名规则为
config.<点分隔的运行模式匹配串>,匹配逻辑非常简单:只要实例当前激活的所有运行模式集合,完全包含配置文件夹名里点分隔的所有段,该文件夹下的配置就会被纳入生效候选,匹配段越多的配置优先级越高。 - AEM官方内置的标准运行模式只有
author/publish(实例类型)、samplecontent/nosamplecontent(示例内容开关)这类,test/stage/prod这类环境标识全是项目部署时自定义加的运行模式,本来就不会出现在AEM预置的运行模式列表里,你在实例里找不到对应的预置运行模式是正常情况。
env值的定义位置
这个作为环境标识的自定义运行模式,只能在实例启动阶段传入,没有其他配置渠道,常见传入方式有4种:
- 直接通过启动命令参数传入:比如用jar包启动AEM时追加
-r stage参数,实例启动后就会激活stage运行模式,自动匹配config.author.stage下的配置 - 在实例本地配置文件中定义:打开
crx-quickstart/conf/sling.properties文件,添加或修改sling.run.modes=author,test配置项,逗号分隔的第二个值就是对应的env值 - 应用服务器部署场景:如果是把AEM部署在Tomcat、WebLogic这类应用服务器上,运行模式值会配置在Web应用的
web.xml或者应用服务器的JNDI环境参数中 - 云托管场景:如果是AMS托管或者AEMaaCS云版本,env对应的运行模式是部署流水线在实例启动时自动注入的,不需要手动在实例内部配置
验证当前实例env值的方法
登录AEM的系统控制台,打开/system/console/status-slingsettings页面,找到Run Modes字段,这里会列出当前实例激活的所有运行模式,除了author/publish这类内置段之外,剩下的环境类标识段就是你配置路径里对应的env值。
补充说明:AEM内核本身不区分哪个运行模式属于"环境标识",所有传入的运行模式地位完全平等,都会参与配置路径匹配。大家约定俗成把环境对应的自定义运行模式叫做
env,只是项目层面的命名习惯,不是AEM官方定义的特殊配置字段。
内容的提问来源于stack exchange,提问作者Manisha Bano
相关产品推荐
相关产品推荐

