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

从Maven Ant Tasks迁移至Maven Artifact Resolver Ant Tasks:签名问题

在Maven Artifact Resolver Ant Tasks中实现JAR包签名

Maven Artifact Resolver Ant Tasks本身没有集成签名功能,所以得把签名和部署拆成两步来做,具体操作如下:

第一步:为所有JAR包生成签名

你可以选择两种方式完成签名:

方式1:调用Maven GPG插件的sign目标

继续用Ant调用Maven的gpg插件生成签名,只做签名不部署:

<artifact:mvn>
    <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.3:sign"/>
    <arg value="-Dgpg.keyname=${你的GPG密钥ID}"/>
    <arg value="-Dgpg.passphrase=${你的GPG密钥密码}"/>
</artifact:mvn>

执行该任务后,会在每个JAR文件的同目录下生成对应的.asc签名文件。

方式2:使用Ant的GPG插件

如果不想依赖Maven,也可以直接用Ant的GPG插件(需提前在Ant中引入),逐个为JAR签名:

<!-- 为主JAR签名 -->
<gpg sign="true" file="${maven-jar}">
    <gpgargs>--default-key ${你的GPG密钥ID}</gpgargs>
</gpg>
<!-- 为源码JAR签名 -->
<gpg sign="true" file="${maven-sources-jar}">
    <gpgargs>--default-key ${你的GPG密钥ID}</gpgargs>
</gpg>
<!-- 为javadoc JAR签名 -->
<gpg sign="true" file="${maven-javadoc-jar}">
    <gpgargs>--default-key ${你的GPG密钥ID}</gpgargs>
</gpg>

执行后同样会生成对应的.asc签名文件。

第二步:部署已签名的文件及签名文件

修改你现有的<resolve:deploy>任务,把每个JAR对应的.asc签名文件也加入部署列表:

<resolver:deploy>
    <pom file="pom.xml"/>
    <remoterepo id="${maven-staging-repository-id}" url="${maven-staging-repository-url}"/>
    <!-- 主JAR及对应签名文件 -->
    <artifact file="${maven-jar}" type="jar"/>
    <artifact file="${maven-jar}.asc" type="asc" classifier=""/>
    <!-- 源码JAR及对应签名文件 -->
    <artifact file="${maven-sources-jar}" type="jar" classifier="sources"/>
    <artifact file="${maven-sources-jar}.asc" type="asc" classifier="sources"/>
    <!-- javadoc JAR及对应签名文件 -->
    <artifact file="${maven-javadoc-jar}" type="jar" classifier="javadoc"/>
    <artifact file="${maven-javadoc-jar}.asc" type="asc" classifier="javadoc"/>
</resolver:deploy>

这样部署后,Sonatype就能获取到每个JAR对应的签名文件,满足Maven中央仓库的签名验证要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:22:15