Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行“mvn部署”时如何使用Jenkins凭据?_Java_Maven_Jenkins_Maven 3 - Fatal编程技术网

Java 运行“mvn部署”时如何使用Jenkins凭据?

Java 运行“mvn部署”时如何使用Jenkins凭据?,java,maven,jenkins,maven-3,Java,Maven,Jenkins,Maven 3,我有一个Maven项目,希望使用mvn clean deploy构建它,以便将构建的工件部署到Nexus存储库中 该存储库的访问数据(用户名和密码)存储在Jenkins凭据中 我想在Jenkins中调用mvn deploy,以便从Jenkins读取该Nexus存储库的凭据(而不是在settings.xml中硬编码) 如果我无法访问Jenkins服务器上的settings.xml,我该怎么做 更新1: 我在“配置文件管理”(JENKINS_URL/configfiles/index)中创建了一个条

我有一个Maven项目,希望使用
mvn clean deploy
构建它,以便将构建的工件部署到Nexus存储库中

该存储库的访问数据(用户名和密码)存储在Jenkins凭据中

我想在Jenkins中调用
mvn deploy
,以便从Jenkins读取该Nexus存储库的凭据(而不是在
settings.xml
中硬编码)

如果我无法访问Jenkins服务器上的
settings.xml
,我该怎么做

更新1:

我在“配置文件管理”(
JENKINS_URL/configfiles/index
)中创建了一个条目,其中包含以下数据:

类型:
Maven settings.xml

全部替换:是

服务器ID:
myServer

凭据:
Nexus存储库的凭据

内容:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <servers>
    <server>
      <id>myServer</id>
      <username>foo</username>
      <password>bar</password>
    </server>
  </servers>
</settings>

在作业的配置中,我包括如下所示的设置
Nexus settings.xml
是“配置文件管理”中的配置

但它不起作用——当构建尝试将工件部署到Nexus时,我会遇到“禁止”错误

更新2:当我使用与Jenkins相同的凭据(存储在我的本地
settings.xml
中)在本地运行
mvn-X deploy
时,我会看到以下输出:

[DEBUG] Failed to decrypt password for server XXX release repository: org.sonatype.plexus.components.sec.dispatcher.SecDispatcherException: java.io.FileNotFoundException: /XXXXXXXXXXXXXXX/.m2/settings-security.xml (No such file or directory)
org.sonatype.plexus.components.sec.dispatcher.SecDispatcherException: org.sonatype.plexus.components.sec.dispatcher.SecDispatcherException: java.io.FileNotFoundException: /XXXXXXXXXXXXXXX/.m2/settings-security.xml (No such file or directory)
    at org.sonatype.plexus.components.sec.dispatcher.DefaultSecDispatcher.decrypt(DefaultSecDispatcher.java:121)
    at org.apache.maven.settings.crypto.DefaultSettingsDecrypter.decrypt(DefaultSettingsDecrypter.java:107)
    at org.apache.maven.settings.crypto.DefaultSettingsDecrypter.decrypt(DefaultSettingsDecrypter.java:63)
    at org.apache.maven.internal.aether.DefaultRepositorySystemSessionFactory.newRepositorySession(DefaultRepositorySystemSessionFactory.java:165)
但是,
settings.xml
中的密码根本没有加密:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                  https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository/>
<interactiveMode/>
<offline/>
<pluginGroups/>
<servers>
  <server>
    <id>NEXUS_REPOSITORY_SNAPSHOTS</id>
    <username>user</username>
    <password>password</password>
  </server>
</servers>
<mirrors/>
<proxies/>
<profiles/>
<activeProfiles/>
</settings>

NEXUS_存储库_快照
用户
密码

.

您可以使用Jenkins配置文件提供程序插件(链接:)创建一个或多个Maven settings.xml文件

注意:如果您需要不同的settings.xml,这也会很有帮助 不同的项目


然后在Jenkins项目的maven deploy步骤中,您可以选择指向已定义的settings.xml文件之一(而不是指向常规Jenkins服务器/.m2/settings.xml)

您可以使用Jenkins配置文件提供程序插件(链接:)创建一个或多个maven settings.xml文件

注意:如果您需要不同的settings.xml,这也会很有帮助 不同的项目


然后,在Jenkins项目的maven deploy步骤中,您可以选择指向定义的settings.xml文件之一(而不是指向general Jenkins server/.m2/settings.xml)

是否要使用pom.xml中存储库的凭据?如果是这样的话,你可以检查@Sambit No,我没有。凭证存储在Jenkins中。Jenkins配置页面中有一个菜单项“凭据”。您可以检查此项。是否要在pom.xml中使用存储库的凭据?如果是这样的话,你可以检查@Sambit No,我没有。凭证存储在Jenkins中。Jenkins配置页面中有一个菜单项“凭据”。您可以检查此项。谢谢你的回答。我觉得我在做类似的事情(如果我错了,请纠正我)——请参阅更新1。您在更新中说,当构建尝试将工件部署到Nexus时,出现了“禁止”错误。您可以共享完整的错误消息吗?以下是错误消息:
未能执行目标org.apache.maven.plugins:maven部署插件:2.7:deploy(默认部署)在项目上\u NAME:未能部署工件:无法将工件项目\u NAME:jar:0.0.8从/传输到NEXUS\u存储库\u快照(http://NEXUS_URL/repository/maven-snapshots):拒绝访问:http://NEXUS_URL/repository/maven-snapshots/PROJECT_NAME/0.0.8/PROJECT_NAME-0.0.8.jar,原因短语:禁止。->[帮助1]
您应该避免在内容上定义服务器。只需使用服务器凭据来定义每个服务器,并确保您选择的凭据正确。此外,请确保jenkins服务器能够联系nexus服务器,并且所有变量的计算都正确(例如nexus\u URL)谢谢你的回答。我觉得我在做类似的事情(如果我错了,请纠正我)——请参阅更新1。你在更新中说你得到了“禁止”构建尝试将构件部署到Nexus时出错。您可以共享完整的错误消息吗?以下是错误消息:
未能执行目标org.apache.maven.plugins:maven deploy plugin:2.7:deploy(默认部署)在项目上项目名称:未能部署工件:无法将工件项目名称:jar:0.0.8从NEXUS存储库传送到NEXUS存储库\u快照(http://NEXUS_URL/repository/maven-snapshots):拒绝访问:http://NEXUS_URL/repository/maven-snapshots/PROJECT_NAME/0.0.8/PROJECT_NAME-0.0.8.jar,原因短语:禁止。->[帮助1]
您应该避免在内容上定义服务器。只需使用服务器凭据来定义每个服务器,并确保您选择的凭据正确。此外,请确保jenkins服务器能够联系nexus服务器,并且所有变量的计算都正确(例如nexus\u URL)
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                  https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository/>
<interactiveMode/>
<offline/>
<pluginGroups/>
<servers>
  <server>
    <id>NEXUS_REPOSITORY_SNAPSHOTS</id>
    <username>user</username>
    <password>password</password>
  </server>
</servers>
<mirrors/>
<proxies/>
<profiles/>
<activeProfiles/>
</settings>