首页 > 解决方案 > 如何将多个参数传递给 --detect.maven.build.command 以使用 jenkins 对 maven 项目进行 blackduck hub 扫描

问题描述

我在 Jenkins 中将以下命令作为 PowerShell 传递:

powershell "[Net.ServicePointManager]::SecurityProtocol = 'tls12'; irm https://detect.synopsys.com/detect.ps1?$(Get-Random) | iex; detect" --blackduck.url=$env:HUB_URL --blackduck.trust.cert=true --blackduck.api.token=$env:BLACKDUCK_HUB_TOKEN --detect.project.name=$env:HUB_PROJECT_NAME --detect.project.version.name=$env:VERSION --detect.maven.include.plugins=true --detect.included.detector.types=maven --detect.maven.build.command=“E:\apache-maven-3.0.3\bin\mvn.cmd -f pom.xml -s settings.xml -gs settings.xml 全新安装 -DIafConfigSuffix=Cert”`

在此处输入图像描述

但是当检测执行时,--detect.maven.build.command 只通过第一个命令,如下所示:

> "C:\Users\a900565\AppData\Local\Temp/synopsys-detect-6.5.0.jar"
> "--blackduck.url=https://blackduckhub.deere.com"
> "--blackduck.trust.cert=true" "--blackduck.api.token=********"
> "--detect.project.name=**********"
> "--detect.project.version.name=master"
> "--detect.maven.include.plugins=true"
> "--detect.included.detector.types=maven"
> "--detect.maven.build.command=E:\apache-maven-3.0.3\bin\mvn.cmd" "-f"
> "pom.xml" "-s" "settings.xml" "-gs" "settings.xml" "clean" "install"
> "-DIafConfigSuffix=Cert"  07:58:14 Java Source:
> JAVA_HOME/bin/java=C:\Program Files\Amazon
> Corretto\jdk1.8.0_202/bin/java 07:58:15 ______     _            _
> 07:58:15 |  _  \   | |          | | 07:58:15 | | | |___| |_ ___  ___|
> |_ 07:58:15 | | | / _ \ __/ _ \/ __| __| 07:58:15 | |/ /  __/ ||  __/
> (__| |_ 07:58:15 |___/ \___|\__\___|\___|\__| 07:58:15  07:58:17 
> 07:58:17 Detect Version: 6.5.0 07:58:17  07:58:17 2020-09-11 07:58:17
> INFO  [main] ---  07:58:17 2020-09-11 07:58:17 INFO  [main] ---
> Current property values: 07:58:17 2020-09-11 07:58:17 INFO  [main] ---
> --property = value [notes] 07:58:18 2020-09-11 07:58:17 INFO  [main] --- ------------------------------------------------------------ 07:58:18 2020-09-11 07:58:17 INFO  [main] --- blackduck.api.token =
> **************************************************************************************************** [cmd]  07:58:18 2020-09-11 07:58:17 INFO  [main] ---
> blackduck.trust.cert = true [cmd]  07:58:18 2020-09-11 07:58:17 INFO 
> [main] --- blackduck.url = ************* [cmd]  07:58:18 2020-09-11
> 07:58:17 INFO  [main] --- detect.included.detector.types = maven [cmd]
> 07:58:18 2020-09-11 07:58:17 INFO  [main] ---
> **detect.maven.build.command = E:\apache-maven-3.0.3\bin\mvn.cmd [cmd]**  07:58:18 2020-09-11 07:58:17 INFO  [main] ---
> detect.maven.include.plugins = true [cmd]  07:58:18 2020-09-11
> 07:58:17 INFO  [main] --- detect.project.name = ********* [cmd] 
> 07:58:18 2020-09-11 07:58:17 INFO  [main] ---
> detect.project.version.name = master [cmd]

如何将多个参数传递给detect.maven.build.command?

标签: powershellmavenjenkins

解决方案


解决方案

该问题与您的嵌套引号字符和缺少转义字符有关。我已使用您的 PowerShell 命令并使用适当的转义字符正确格式化了字符串。

powershell label: '', script: '''
    [Net.ServicePointManager]::SecurityProtocol = \'tls12\'; 
    irm https://detect.synopsys.com/detect.ps1?$(Get-Random) | iex; 
    detect 
        --blackduck.url=$env:HUB_URL 
        --blackduck.trust.cert=true 
        --blackduck.api.token=$env:BLACKDUCK_HUB_TOKEN 
        --detect.project.name=$env:HUB_PROJECT_NAME 
        --detect.project.version.name=$env:VERSION 
        --detect.maven.include.plugins=true 
        --detect.included.detector.types=maven
        --detect.maven.build.command="E:\\apache-maven-3.0.3\\bin\\mvn.cmd -f pom.xml -s settings.xml -gs settings.xml clean install -DIafConfigSuffix=Cert"
'''

管道语法生成器

您可以使用Jenkins 中的管道语法生成器自动生成此脚本。配置管道并单击底部的管道语法超链接。见下图。

管道语法超链接

从那里您可以输入 PowerShell 脚本并单击Generate Pipeline Script

在此处输入图像描述

后期脚本

我注意到您的 PowerShell 脚本有一些看似放错位置的引号。如果我的脚本没有运行,请发布您直接从 PowerShell 控制台运行的 PowerShell 脚本,我将更新我的答案


推荐阅读