当前位置: 首页 > 知识库问答 >
问题:

后续第2部分--使用Maven仅对Jars进行签名和部署到Maven Central

乜安志
2023-03-14

以下是后续问题:使用Maven只对JAR进行签名并将其部署到Maven Central。构建和编译完全由Ant完成

感谢前面问题的答案,以及sonatype支持人员的一些建议,我刚刚经历了第一次“非失败”。以下是mvn部署的当前输出:

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building XBN-Java 0.1.2-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-enforcer-plugin:1.0:enforce (enforce-maven) @ xbnjava ---
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ xbnjava ---
[INFO] Installing R:\jeffy\programming\sandbox\xbnjava\pom.xml to C:\Users\jeffy\.m2\repository\com\github\aliteralmind\xbnjava\0.1.2-SNAPSHOT\xbnjava-0.1.2-SNAPSHOT.pom
[INFO]
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ xbnjava ---
Downloading: https://oss.sonatype.org/content/repositories/snapshots/com/github/aliteralmind/xbnjava/0.1.2-SNAPSHOT/maven-metadata.xml
607/607 B
Downloaded: https://oss.sonatype.org/content/repositories/snapshots/com/github/aliteralmind/xbnjava/0.1.2-SNAPSHOT/maven-metadata.xml (607 B at 0.5 KB/sec)
Uploading: https://oss.sonatype.org/content/repositories/snapshots/com/github/aliteralmind/xbnjava/0.1.2-SNAPSHOT/xbnjava-0.1.2-20140717.010135-5.pom
2/4 KB
4/4 KB
Uploaded: https://oss.sonatype.org/content/repositories/snapshots/com/github/aliteralmind/xbnjava/0.1.2-SNAPSHOT/xbnjava-0.1.2-20140717.010135-5.pom (4 KB at 11.9 KB/sec)
Downloading: https://oss.sonatype.org/content/repositories/snapshots/com/github/aliteralmind/xbnjava/maven-metadata.xml
290/290 B
Downloaded: https://oss.sonatype.org/content/repositories/snapshots/com/github/aliteralmind/xbnjava/maven-metadata.xml (290 B at 1.5 KB/sec)
Uploading: https://oss.sonatype.org/content/repositories/snapshots/com/github/aliteralmind/xbnjava/0.1.2-SNAPSHOT/maven-metadata.xml
607/607 B
Uploaded: https://oss.sonatype.org/content/repositories/snapshots/com/github/aliteralmind/xbnjava/0.1.2-SNAPSHOT/maven-metadata.xml (607 B at 2.5 KB/sec)
Uploading: https://oss.sonatype.org/content/repositories/snapshots/com/github/aliteralmind/xbnjava/maven-metadata.xml
290/290 B
Uploaded: https://oss.sonatype.org/content/repositories/snapshots/com/github/aliteralmind/xbnjava/maven-metadata.xml (290 B at 1.0 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.579 s
[INFO] Finished at: 2014-07-16T21:01:36-04:00
[INFO] Final Memory: 7M/19M
[INFO] ------------------------------------------------------------------------

根据该日志,以下文件已上载到

https://oss.sonatype.org/content/repositories/snapshots/com/github/aliteralmind/xbnjava

  • maven元数据。xml
  • 0.1.2-SNAPSHOT/maven-metadata。xml
  • 0.1.2-SNAPSHOT/xbnjava-0.1.2-20140717.010135-5。pom

当在浏览器中实际查看该目录时,我看到了这些文件:

  • maven元数据。xml(所有文件都有md5sha1版本)

所以,我不明白为什么日志上说发送了20140717文件,但是服务器实际上包含了20140716版本。但是还有一个更大的问题,因为目标是

  • xbnjava-0.1.2。jar

在服务器上(以及他们的*. asc同伴),他们都不是。

在POM中,我有这个属性

<properties>
   <jarprefix>../build/${project.artifactId}-${project.version}/download/${project.artifactId}-${project.version}</jarprefix>
</properties>

这个插件块(是配置文件部分的子集)包含三个工件,每个工件都显式指向这三个jar文件中的一个

<plugins>
   <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>build-helper-maven-plugin</artifactId>
      <version>1.8</version>
      <executions>
         <execution>
            <id>attach-artifacts</id>
            <phase>package</phase>
            <goals>
               <goal>attach-artifact</goal>
            </goals>
            <configuration>
               <artifacts>
                  <artifact>
                     <file>${jarprefix}.jar</file>
                     <type>jar</type>
                  </artifact>
                  <artifact>
                     <file>${jarprefix}-javadoc.jar</file>
                     <type>jar</type>
                     <classifier>javadoc</classifier>
                  </artifact>
                  <artifact>
                     <file>${jarprefix}-sources.jar</file>
                     <type>jar</type>
                     <classifier>sources</classifier>
                  </artifact>
               </artifacts>
            </configuration>
         </execution>
      </executions>
   </plugin>
</plugins>

(POM是

R:\jeffy\programming\sandbox\xbnjava\pom.xml

罐子在里面

R:\jeffy\programming\build\xbnjava-0.1.1\download

)

那么,下一步是什么让POM成功

  1. 识别jar文件
  2. 签名(并提示我输入公钥密码,对吗?),和
  3. 把他们推给Maven

下面是我更新的settings.xmlpom.xml

(sonatype支持人员还建议考虑一个“最小Maven”的想法,这个想法完全避免了POM。这是一个有趣的想法,但我想先看看这个。)

谢谢你帮助我。

设置:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
   <servers>
      <server>
         <id>ossrh</id>
         <username>aliteralmind</username>
         <password>MY_SONATYPE_DOT_COM_PASSWORD</password>
      </server>
   </servers>
   <pluginGroups></pluginGroups>
   <proxies></proxies>
   <mirrors></mirrors>
   <profiles></profiles>
</settings>

POM:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.github.aliteralmind</groupId>
   <artifactId>xbnjava</artifactId>
   <packaging>pom</packaging>
   <version>0.1.2-SNAPSHOT</version>
   <name>XBN-Java</name>
   <url>https://github.com/aliteralmind/xbnjava</url>
   <inceptionYear>2014</inceptionYear>
   <organization>
      <name>Jeff Epstein</name>
   </organization>
   <description>XBN-Java is a collection of generically-useful backend (server side, non-GUI) programming utilities, featuring RegexReplacer and FilteredLineIterator. XBN-Java is the foundation of Codelet (http://codelet.aliteralmind.com).</description>

   <parent>
      <groupId>org.sonatype.oss</groupId>
      <artifactId>oss-parent</artifactId>
      <version>7</version>
   </parent>

   <licenses>
      <license>
         <name>Lesser General Public License (LGPL) version 3.0</name>
         <url>https://www.gnu.org/licenses/lgpl-3.0.txt</url>
      </license>
      <license>
         <name>Apache Software License (ASL) version 2.0</name>
         <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      </license>
   </licenses>

   <developers>
      <developer>
         <name>Jeff Epstein</name>
         <email>aliteralmind-github@yahoo.com</email>
         <roles>
            <role>Lead Developer</role>
         </roles>
      </developer>
   </developers>

   <issueManagement>
      <system>GitHub Issue Tracker</system>
      <url>https://github.com/aliteralmind/xbnjava/issues</url>
   </issueManagement>

   <distributionManagement>
      <snapshotRepository>
         <id>ossrh</id>
         <url>https://oss.sonatype.org/content/repositories/snapshots</url>
      </snapshotRepository>
   </distributionManagement>

   <scm>
      <connection>scm:git:git@github.com:aliteralmind/xbnjava.git</connection>
      <url>scm:git:git@github.com:aliteralmind/xbnjava.git</url>
      <developerConnection>scm:git:git@github.com:aliteralmind/xbnjava.git</developerConnection>
   </scm>

   <properties>
      <java.version>1.7</java.version>
      <jarprefix>../build/${project.artifactId}-${project.version}/download/${project.artifactId}-${project.version}</jarprefix>
   </properties>

   <profiles>
      <!--
      This profile will sign the JAR file, sources file, and javadocs file using the GPG key on the local machine.
      See: https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven
      -->
      <profile>
         <id>release-sign-artifacts</id>
         <activation>
            <property>
               <name>release</name>
               <value>true</value>
            </property>
         </activation>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.codehaus.mojo</groupId>
                  <artifactId>build-helper-maven-plugin</artifactId>
                  <version>1.8</version>
                  <executions>
                     <execution>
                        <id>attach-artifacts</id>
                        <phase>package</phase>
                        <goals>
                           <goal>attach-artifact</goal>
                        </goals>
                        <configuration>
                           <artifacts>
                              <artifact>
                                 <file>${jarprefix}.jar</file>
                                 <type>jar</type>
                              </artifact>
                              <artifact>
                                 <file>${jarprefix}-javadoc.jar</file>
                                 <type>jar</type>
                                 <classifier>javadoc</classifier>
                              </artifact>
                              <artifact>
                                 <file>${jarprefix}-sources.jar</file>
                                 <type>jar</type>
                                 <classifier>sources</classifier>
                              </artifact>
                           </artifacts>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
   </profiles>
</project>

共有2个答案

呼延钱明
2023-03-14

这就是我所做的改变,正如@AlexeyGavrilov的回答所建议的:

原件:

<profiles>
   <!--
   This profile will sign the JAR file, sources file, and javadocs file using the GPG key on the local machine.
   See: http://blog.sonatype.com/2010/01/how-to-generate-pgp-signatures-with-maven/
   -->
   <profile>
      <id>release-sign-artifacts</id>
      <activation>
         <property>
            <name>release</name>
            <value>true</value>
         </property>
      </activation>
      <build>
         <plugins>
            <plugin>
               <groupId>org.codehaus.mojo</groupId>
               <artifactId>build-helper-maven-plugin</artifactId>
               <version>1.8</version>
               <executions>
                  <execution>
                     <id>attach-artifacts</id>
                     <phase>package</phase>
                     <goals>
                        <goal>attach-artifact</goal>
                     </goals>
                     <configuration>
                        <artifacts>
                           <artifact>
                              <file>${jarprefix}.jar</file>
                              <type>jar</type>
                           </artifact>
                           <artifact>
                              <file>${jarprefix}-javadoc.jar</file>
                              <type>jar</type>
                              <classifier>javadoc</classifier>
                           </artifact>
                           <artifact>
                              <file>${jarprefix}-sources.jar</file>
                              <type>jar</type>
                              <classifier>sources</classifier>
                           </artifact>
                        </artifacts>
                     </configuration>
                  </execution>
               </executions>
            </plugin>
         </plugins>
      </build>
   </profile>
</profiles>

新的:

<build>
   <plugins>
      <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
         <version>1.8</version>
         <executions>
            <execution>
               <id>attach-artifacts</id>
               <phase>package</phase>
               <goals>
                  <goal>attach-artifact</goal>
               </goals>
               <configuration>
                     <artifact>
                        <file>${jarprefix}.jar</file>
                        <type>jar</type>
                     </artifact>
                     <artifact>
                        <file>${jarprefix}-javadoc.jar</file>
                        <type>jar</type>
                        <classifier>javadoc</classifier>
                     </artifact>
                     <artifact>
                        <file>${jarprefix}-sources.jar</file>
                        <type>jar</type>
                        <classifier>sources</classifier>
                     </artifact>
                  </artifacts>
               </configuration>
            </execution>
         </executions>
      </plugin>
   </plugins>
</build>

<profiles>
   <!--
   This profile will sign the JAR file, sources file, and javadocs file using the GPG key on the local machine.
   See: http://blog.sonatype.com/2010/01/how-to-generate-pgp-signatures-with-maven/
   -->
   <profile>
      <id>release-sign-artifacts</id>
      <activation>
         <property>
            <name>release</name>
            <value>true</value>
         </property>
      </activation>
   </profile>
澹台镜
2023-03-14

您正在将工件附加到发布标志工件配置文件中,该配置文件在运行“mvn deploy”命令时可能已禁用。尝试运行mvn deploy-Drelease=true或将release-sign-artifacts配置文件移动到main。pom部分。根本不确定你需要一个单独的个人资料。

时间戳很好。这就是Maven存储库存储快照的方式。

Maven有一个陡峭的学习曲线,但一旦你理解了基本概念,它就会起作用。

 类似资料:
  • 问题内容: 这是以下 问题 的后续措施: 后续问题:使用Maven仅将jar签名并部署到Maven Central。构建和编译完全由Ant完成 多亏了对先前问题的回答,以及声纳支持人员的一些建议,我才有了我的第一个“永无止境”。这是当前的输出: 根据此日志,以下文件已上传到 https://oss.sonatype.org/content/repositories/snapshots/com/gi

  • 请参阅后续问题:后续第2部分——使用Maven仅对JAR进行签名并将其部署到Maven Central。构建和编译完全由Ant完成 这是对这个问题的跟进:如何使用Maven只签三个罐子并将其推向Maven Central? 我的目标是让马文签名并把已经制作好的罐子推到马文中心。三个罐子 位于 这些JAR是由我的Ant构建过程独立创建的。Maven不用于以任何方式构建或编译我的项目——我只是用它将J

  • 问题内容: 请参阅后续问题: 后续部分2 –使用Maven仅将jar签名并部署到Maven Central。构建和编译完全由Ant完成 我的目标是让Maven签名并将 已创建的 jar 推送到Maven Central。该三个jar 位于 这些jar由我的Ant构建过程独立创建。Maven不会以任何方式用于构建或编译我的项目-我只是用它来将罐子放在Maven Central上。(在我上一个问题的帮

  • 我创建了代码,将图像添加到现有的pdf文档中,然后对其进行签名,全部使用PDFBox(参见下面的代码)。 代码很好地添加了图像和签名。但在一些文档中,Acrobat Reader抱怨“签名字节范围无效”。 问题似乎与本题描述的问题相同。这个问题的答案更详细地描述了这个问题:问题是我的代码在文档中留下了交叉引用类型的混合(流和表)。事实上,有些文档甚至不会打开,因为这样会产生问题。 我的问题是:我如

  • 问题内容: 我们在项目中使用Jenkins在开发环境上进行构建和部署。我已经在jenkins中使用maven成功创建了一个战争文件,现在我必须创建另一个作业才能将该战争文件部署到weblogic服务器中。 但是,我不知道在jenkins中配置此作业所需的步骤。仅仅调用一个maven deploy命令就可以了吗?有人可以告诉我使用jenkins将war文件部署到weblogic 10.3.5中需要采

  • 更多一键式部署模式 Java™部署常常很混乱,容易出现错误,需要许多手工操作,这会延误向用户交付软件的时间。本文是分两部分的让开发自动化系列文章的第 2 部分。在本文中,自动化专家 Paul Duvall 进一步补充用于开发可靠、可重复且一致的部署流程的一些关键模式,帮助读者为 Java 应用程序生成简便的部署。 关于本系列 作为开发人员,我们致力于为用户自动化流程;但许多开发人员疏忽了自动化我们