2016-08-15 26 views
0

我以爲兩者都定義了相同的JVM屬性,但這兩者之間顯然存在差異,我無法找到明確的解釋。如果我在構建的Jenkins Maven中使用這兩者,則只有通過-D設置的屬性才能在Java應用程序中通過System.getProperties()顯示。儘管MAVEN_OPTS也應該傳遞給JVM。好像我錯過了一些東西。MAVEN_OPTS與mvn -D

Thx的解釋。

回答

0

MAVEN_OPTS是一個環境變量,允許您將參數傳遞給運行Maven的Java VM。因此,您可以使用它來設置堆和perm的大小(例如,MAVEN_OPTS = -XX:MaxPermSize = 256m)。

相反,-D參數是命令行參數。 Maven已經運行在Java中,所以你將無法控制Java相關的參數。

有關命令行參數和MAVEN_OPTS的說明,請參見this page

基於此,我猜你看不到該變量的原因是因爲它被用作JVM參數而不是屬性。

也許this answer會幫你找到它們嗎?

+0

我已經通過這兩個鏈接。但根據文檔,我期望MAVEN_OPTS = -Dname = value與java -Dname = value可以通過System.getProperty(「name」)訪問相同 –

+0

謝謝你的澄清..那個推理聽起來是正確的...當我在Jenkins中設置MAVEN_OPTS並執行mvn help:system時,我可以看到系統屬性下的參數。我不知道它在到Java應用程序的途中會不知所蹤。 –

+0

不明白。它在那裏,當我嘗試mvn幫助:系統。它在那裏,當我開始申請[ott-qa-test-custom-maven_opts] $ /usr/lib64/etnpol-sun-java-1.8.0/bin/java -Dseb.cra.ott.environment = DEV -Dtest = LoginTest -Dseb.caps.browserName = chrome,但當我嘗試通過System.getProperties()從應用程序中獲取屬性時,它不存在。只有-Dtest = LoginTest以某種方式被識別,因爲它必須被maven-surefire-plugin消化掉,否則其他測試也會運行(雖然在屬性中也沒有看到)。 –