【发布时间】:2016-12-25 13:40:47
【问题描述】:
我们的工件 maven 存储库只能通过 https 访问,但使用的是自签名证书。我们希望让新开发人员尽可能轻松上手,因此我们选择不将证书添加到默认的 java 密钥库中。
相反,我用我们所有的自签名证书创建了一个新的密钥库,并在我们项目的根目录/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 <module-name>运行它 -
这是一个通用配置,这意味着它应该位于用户设置所在的文件夹中。可以在此处阅读简单的解决方案:maven.apache.org/guides/mini/guide-repository-ssl.html 通过
MAVEN_OPTS或通过$HOME/.mavenrc用于此类事情。.mvn/jvm.config不是正确的位置,因为它是特定于项目的。这是系统特定的。在这种情况下,我倾向于.mavenrc或Windows$HOME/mavenrc_pre.cmd...然后你相应地设置MAVEN_OTPS... -
如果我不希望我的所有项目都使用 save javax.net.ssl.trustStore 并且我厌倦了每次都在命令行中添加 -D 怎么办?
标签: java maven maven-3 multi-module