You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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写法。

验证步骤

  1. 在本地执行mvn package测试签名流程是否正常
  2. 确保Jenkins节点上已正确安装AzureSignTool.exe,且环境变量AZURESIGNTOOLS_FULLPATH指向工具所在目录
  3. 确认Jenkins中所有Azure相关环境变量已正确配置并传递到构建过程

内容的提问来源于stack exchange,提问作者nikhil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:20:05