如何通过环境变量传递Maven设置

时间:2015-07-06 16:42:24

标签: maven

在我们的setting.xml文件中,我们有以下内容:

<servers>
    <server>
      <id>deploymentRepo</id>
      <username>repouser</username>
      <password>repopwd</password>
    </server>
</servers>

是否可以通过环境变量而不是settings.xml传递这些设置(或等效设置)?

3 个答案:

答案 0 :(得分:20)

是的,您可以通过两种方式执行此操作:

  • 使用变量在命令行中传递属性。例如,您可以在settings.xml中使用以下内容:
<servers>
    <server>
      <id>deploymentRepo</id>
      <username>${server.username}</username>
      <password>${server.password}</password>
    </server>
</servers>

在命令行中,以这种方式传递这些变量:

mvn clean package -Dserver.username=yourusername -Dserver.password=yourpassword
  • 导出环境属性。例如,如果您导出(在linux中,类似export SERVER_USERNAME=yourusernameSERVER_USERNAMESERVER_PASSWORD变量,您可以这样使用:
<servers>
    <server>
      <id>deploymentRepo</id>
      <username>${env.SERVER_USERNAME}</username>
      <password>${env.SERVER_PASSWORD}</password>
    </server>
</servers>

有关propeties的更多信息,请参阅reference文档。

答案 1 :(得分:0)

您可以从命令行传递值

  

mvn -Dvar = someValue -Dtest.username = xyz install

在POM文件中,您可以将系统变量(在命令行或pom中指定)称为$ {var},将环境变量称为$ {env.myVariable},即$ {test.username}

您还可以参考sure-fire插件doc

答案 2 :(得分:0)

您可以传递包含凭据的URL,例如

mvn deploy -DaltReleaseDeploymentRepository=myrepo::https://user:pass@server/repo

请参阅https://maven.apache.org/plugins/maven-deploy-plugin/deploy-mojo.html