powershell - 如何将多个参数传递给 --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?
解决方案
解决方案
该问题与您的嵌套引号字符和缺少转义字符有关。我已使用您的 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 脚本,我将更新我的答案
推荐阅读
- laravel - 未找到 Laravel 视图 - 清除每个缓存后
- java - Android 应用和数据库通信:JSON 解析和列表视图
- bash - 单行 bash 命令,将计算并显示文件中特定字符串的出现次数
- node.js - 无法向对话流发送响应
- php - Laravel 多控制器功能一条路线
- pandas - 将数据保存到现有文件中的工作表时在 openpyxl 中正确使用 load_workbook
- sql - XML 元素位置无效。(SQL-XSD)
- elixir - 如何为 Elixir 结构验证/强制执行类型和值?
- c# - 锁定孩子的旋转,使其始终朝下
- c++ - 在 unordered_map 上查找值