从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
相关产品推荐
相关产品推荐

