Jenkins中pom.xml配置Azuresigntool签名exe遇Maven插件依赖解析失败求助
解决Maven无法解析azure-maven-plugin的问题
核心问题
你使用的com.microsoft.azure:azure-maven-plugin并非真实存在的Maven插件,Maven中央仓库中没有该Artifact,这是导致依赖解析失败的直接原因。Gemini给出的插件建议有误,正确的做法是通过exec-maven-plugin直接调用AzureSignTool.exe完成签名操作,这种方式更灵活且无需依赖不存在的专用插件。
修正后的pom.xml配置
替换原有的插件配置为以下内容:
<build> <plugins> <!-- 使用exec-maven-plugin调用AzureSignTool.exe执行签名 --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <id>sign-exe-files</id> <phase>package</phase> <goals> <goal>exec</goal> </goals> <configuration> <workingDirectory>${project.build.directory}/Release</workingDirectory> <!-- 指定AzureSignTool.exe的路径 --> <executable>${jenkins.jenkinsExecutable}/azuresigntools.exe</executable> <!-- 签名命令参数 --> <arguments> <argument>sign</argument> <argument>-kvu</argument> <argument>${jenkins.jenkinsAzureCertificateURL}</argument> <argument>-kvt</argument> <argument>${jenkins.jenkinsAzureTenantId}</argument> <argument>-kvi</argument> <argument>${jenkins.jenkinsAzureClientId}</argument> <argument>-kvs</argument> <argument>${jenkins.jenkinsAzureClientSecret}</argument> <argument>-kvc</argument> <argument>${jenkins.jenkinsAzureCertificateName}</argument> <argument>-tr</argument> <argument>${jenkins.jenkinsAzureTimeStamp}</argument> <argument>-td</argument> <argument>sha256</argument> <argument>-v</argument> <!-- 传递所有要签名的exe文件路径 --> <argument>${project.build.directory}/Release/*.exe</argument> </arguments> </configuration> </execution> </executions> </plugin> </plugins> </build> <properties> <jenkins.jenkinsExecutable>${env.AZURESIGNTOOLS_FULLPATH}</jenkins.jenkinsExecutable> <jenkins.jenkinsAzureCertificateURL>${env.AZURE_KV_URL}</jenkins.jenkinsAzureCertificateURL> <jenkins.jenkinsAzureCertificateName>${env.AZURE_CERT_NAME}</jenkins.jenkinsAzureCertificateName> <jenkins.jenkinsAzureTenantId>${env.AZURE_TENANT_ID}</jenkins.jenkinsAzureTenantId> <jenkins.jenkinsAzureClientId>${env.AZURE_CLIENT_ID}</jenkins.jenkinsAzureClientId> <jenkins.jenkinsAzureClientSecret>${env.AZURE_CLIENT_SECRET}</jenkins.jenkinsAzureClientSecret> <jenkins.jenkinsAzureTimeStamp>${env.TIME_STAMP}</jenkins.jenkinsAzureTimeStamp> </properties>
关键修正点说明
- 替换插件:用官方维护的
exec-maven-plugin替代不存在的azure-maven-plugin,该插件专门用于在Maven构建中执行外部命令行工具。 - 修正参数错误:
- 原配置中
kvi参数缺失横杠,改为-kvi - 时间戳变量
{env.TIME_STAMP}缺失$符号,改为${env.TIME_STAMP} - 移除重复的
-td sha256参数
- 原配置中
- 简化文件指定:直接通过
*.exe通配符指定要签名的文件,避免原配置中错误的嵌套filesets写法。
验证步骤
- 在本地执行
mvn package测试签名流程是否正常 - 确保Jenkins节点上已正确安装AzureSignTool.exe,且环境变量
AZURESIGNTOOLS_FULLPATH指向工具所在目录 - 确认Jenkins中所有Azure相关环境变量已正确配置并传递到构建过程
内容的提问来源于stack exchange,提问作者nikhil
相关产品推荐
相关产品推荐

