我們artifactory的Maven倉庫只有通過HTTPS訪問,但使用自簽名證書。我們希望儘可能簡化新開發人員的工作,因此我們選擇不將證書添加到默認的Java密鑰庫。請參閱相關文件中jvm.config
相反,我做了所有我們的自簽名的證書,一個新的密鑰庫,並在/project-files/keystore.jks
檢查這在我們的項目的根。我還添加了/.mvn/jvm.config
,它設置了一些項目特定的jvm選項(在maven 3.3.1中介紹)。我第一次嘗試是
-Djavax.net.ssl.trustStore=/project-files/keystore.jks
-Djavax.net.ssl.trustStorePassword=password`
如果在根目錄運行Maven這工作正常,但如果我從它的子目錄中運行一個單獨的模塊,它無法找到信任存儲和失敗。
然後我添加了一個shell變量PROJECT_BASEDIR
,我的jvm.config中的trustStore變成了-Djavax.net.ssl.trustStore=$PROJECT_BASEDIR/project-files/keystore.jks
。但是,它仍然找不到信任商店。如果我使用ps
來看看這個過程,結果發現變量沒有解決。我也試過-Djavax.net.ssl.trustStore=${project.parent.basedir}/project-files/keystore.jks
,但那也沒用。
任何人都知道這個問題的解決方案?
實際上不建議從其子目錄運行單個模塊,您仍然應該從根目錄運行它,並且只能通過運行它'mvn -pl' –
這是一個通用配置,這意味着它應該位於文件夾所在的位置用戶設置位於。簡單的解決方案可以在這裏閱讀:https://maven.apache.org/guides/mini/guide-repository-ssl.html可以通過'MAVEN_OPTS'或者通過'$ HOME/.mavenrc'來實現。 '.mvn/jvm.config'不是正確的位置,因此導致其項目特定。這是系統特定的。在這種情況下,我傾向於'.mavenrc'或Windows'$ HOME/mavenrc_pre.cmd' ...並且您在那裏設置了'MAVEN_OTPS' ... – khmarbaise