【问题标题】:how to get maven properties env value from controller?如何从控制器获取 Maven 属性 env 值?
【发布时间】:2018-12-05 19:46:15
【问题描述】:

我有 maven build pom.xml 配置

    <profile>
        <id>local</id>
        <properties>
            <env>local</env>

        </properties>

    </profile>
    <profile>
        <id>dev</id>
        <properties>
            <env>dev</env>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <env>prod</env>
        </properties>
    </profile>
</profiles>

和构建选项如下

<build>
        <defaultGoal>install</defaultGoal>
        <directory>${basedir}/target</directory>
        <finalName>${artifactId}-${version}</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>src/main/resources-${env}</directory>
            </resource>
        </resources>

是否可以将 env 值带到任何控制器上? 我想放上env值,做分支操作

【问题讨论】:

    标签: spring jsp controller environment-variables maven-profiles


    【解决方案1】:

    您的问题的简短回答可能是“否”,但 我将尝试在这里提供一个总体答案以澄清几件事

    您应该区分纯构建工具的 maven 和您的应用程序运行时。

    通常是这样的:

    构建阶段

    您调用 maven 来构建您的工件。它可以是 WAR、JAR、EAR 文件或其他任何文件。 作为构建工具,maven 负责编译你的源代码,如果你有要运行的测试,则对其进行测试,打包编译的类(因此是 jar/war/etc.artifact),仅此而已。

    运行时阶段

    之后,您在服务器上运行应用程序。这里 spring / jsp 的责任开始了,但简而言之,这个阶段是一个运行时阶段,到它发生的时候,你甚至不知道应用程序是由 maven 构建和打包的——这已经无关紧要了。你有神器 - 你运行它

    现在很明显,定义某些属性的 maven 配置文件在构建时是“相关的”并且不会传播到运行时,因为它们在一般情况下不会存在。

    现在您可以从 maven 本地触发应用程序的启动(如果您使用它,则可以使用 mvn java:exec 之类的东西),在这种情况下,您可能可以摆弄命令行参数,但同样它仅用于本地开发目的,没什么与应用程序生命有关。

    从技术上讲,如果你绝对需要它,你可以找到一种方法来做到这一点:

    您还可以创建一种更复杂的构建方式,它将在 maven(某种 maven 插件)中读取这些属性,并生成一个包含这些属性及其值的源文件,如果这种情况发生在打包之前(再次通过maven)该文件将与您的其余代码一起“烘焙到您的工件中”。这样它就可以在运行时访问,因为 spring 可以读取这个属性文件。

    您应该问自己的真正问题是这样做是否正确?通常,这里的答案是“不”:)

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多