2012-12-25 40 views
15

我如何設置環境變量(換句話說,內部由System.getenv("APP_HOME")在POM文件訪問?如何在mvn pom中設置環境變量?

APP_HOME=/path/home 

我知道我可以在.profile設置它,但不知道是否POM可以做同樣的伎倆。

每低於bmargulies的建議下,我嘗試以下,沒有運氣

<build> 
    <finalName>KvpStore</finalName> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <encoding>UTF-8</encoding> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.12.4</version> 
      <configuration> 
       <includes> 
        <include>**/*Test*.java</include> 
       </includes> 
       <environmentVariables> 
        <APP_NAME>blah_blah</APP_NAME> <------------------------ 
       </environmentVariables> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

回答

1

documentation of the maven-surefire-plugin顯示示例,並描述瞭如何做設置系統屬性的這樣的事情。

​​

它可能會更好地使用它們的環境變量,因爲它是簡單的使用它們,導致需要正確設置環境變量和CMD.EXE和JVM必須重新啓動才能讓他們的工作。

沒有必要配置包括測試,導致maven-surefire-plugin早已以下缺省值:

<includes> 
<include>**/Test*.java</include> 
<include>**/*Test.java</include> 
<include>**/*TestCase.java</include> 
</includes> 
+25

OP要求提供env vars,而不是Java系統屬性。 – bmargulies

+0

我知道,但env變量比系統屬性造成更多的問題。 – khmarbaise

+1

我猜他或她正在啓動真正閱讀env vars的流程。 – bmargulies

26

一些插件,比如神火,讓你進行設置。有沒有辦法,在一般情況下,在聚甲醛。

肯定火的文檔是here。 Surefire將在測試運行期間設置環境變量,而不是其他任何事情。你必須確保火叉。

在配置...

<configuration> 
    <forkMode>always</forkMode> 
    <environmentVariables> 
    <var1>val1</var1> 
    </environmentVariables> 
</configuration> 
+0

嗯..似乎並沒有工作。我認爲是密鑰的名字? – JAM

+1

使用mvn -X來檢查發生了什麼。 – bmargulies

+0

嘗試此操作之前,您是否重新啓動了cmd.exe?你是從命令行還是從Eclipse調用? – khmarbaise