【问题标题】:How to add environment variables to maven-jetty-plugin如何将环境变量添加到 maven-jetty-plugin
【发布时间】:2012-11-17 01:27:57
【问题描述】:

我使用的maven jetty插件如下:

 <plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>8.1.5.v20120716</version>
    <configuration>
      <stopKey>1</stopKey>
      <stopPort>9999</stopPort>
    </configuration>
  </plugin>

我的网络应用在 ec2 上运行,我们设置了一些环境变量(如 CLOUD_DEV_PHASE)。我想知道是否有办法将 CLOUD_DEV_PHASE 的虚拟值放入 pom 文件中,这样您就不必在系统上执行此操作。有没有办法做到这一点?

我正在寻找类似的东西

CLOUD_DEV_PHASE=dev mvn jetty:run

【问题讨论】:

    标签: maven jetty maven-plugin maven-jetty-plugin


    【解决方案1】:

    你的意思是添加系统属性? 像这样:

    <plugin>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty-maven-plugin</artifactId>
      <configuration>
        <systemProperties>
          <systemProperty>
             <name>CLOUD_DEV_PHASE</name>
             <value>dummy</value>
           </systemProperty>
        </systemProperties>
        <webApp>
          <contextPath>/test</contextPath>
        </webApp>
       </configuration>
    </plugin>
    

    更多信息,请查看:http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin#Setting_System_Properties

    【讨论】:

    • 不,它必须是环境变量。以下作品:CLOUD_DEV_PHASE=dev mvn jetty:run
    【解决方案2】:

    我不确定是否完全理解你的问题,但如果你需要设置环境变量,我通常使用 exec 插件:http://mojo.codehaus.org/exec-maven-plugin/

    以下目标:http://mojo.codehaus.org/exec-maven-plugin/exec-mojo.html

    有点像这样:

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2.1</version>
        <executions>
          <execution>
            <id>setEnvVar</id>
            <phase>initialize</phase>
            <goals>
              <goal>exec</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <executable>export</executable>
          <arguments>
            <argument>CLOUD_DEV_PHASE=Something</argument>
          </arguments>
        </configuration>
      </plugin>
    

    问候

    【讨论】:

    • 我试过了,export 不是命令而是 bash 函数,所以 exec:exec 不能这样调用它。看看有没有办法
    • 我尝试了 src/main/config/environment.sh ,它只是导出,但由于进程是分叉的,所以它没有被添加。
    • 你试过 exec:java 吗? mojo.codehaus.org/exec-maven-plugin/java-mojo.html 在编译阶段?
    • 您的意思是在 java 代码中设置环境变量并让 exec:java 调用它?我发现 [stackoverflow.com/questions/318239/… page) 或许可以解决问题。
    【解决方案3】:

    我会尝试在项目部分设置属性env.CLOUD_DEV_PHASE

    <project>
        ...
        <properties>
            <env.CLOUD_DEV_PHASE>dev</env.CLOUD_DEV_PHASE>
        </properties>
        ...
    </project>
    

    或在 Jetty 插件配置中:

    <plugin>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty-maven-plugin</artifactId>
      <configuration>
        ...
        <systemProperties>
          <systemProperty>
             <name>env.CLOUD_DEV_PHASE</name>
             <value>dev</value>
           </systemProperty>
        </systemProperties>
       </configuration>
    </plugin>
    

    【讨论】:

    • 所以我尝试将属性添加到 pom 中,但码头 JVM 似乎不会看到它。
    • 然后我尝试了 systemProperty env.CLOUD_DEV_PHASE 并且 env.CLOUD_DEV_PHASE 的 java 系统属性存在但它不在环境变量列表中
    【解决方案4】:

    我在论坛上看到了这个。我希望它对你有用。

    <plugin>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>${jetty.version}</version>
        <configuration>
          ...
    
          <env>
             <wibble>pencil</wibble>
             <foo>bar</foo>
             <black>white</black>
          </env>
    
          ...
    
        </configuration>
    </plugin>
    

    【讨论】:

    • 有效!谢谢!请注意,根据我的经验,您应该使用“jetty:run-forked”目标而不是“jetty:run”。
    猜你喜欢
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多