【问题标题】:Followup part 2 -- Using Maven to only sign and deploy jars to Maven Central. Build and compilation is done entirely with Ant后续部分 2 -- 使用 Maven 仅对 jar 进行签名并将其部署到 Maven Central。构建和编译完全由 Ant 完成
【发布时间】:2014-07-17 02:13:47
【问题描述】:

这是对以下内容的跟进: Followup questions: Using Maven to only sign and deploy jars to Maven Central. Build and compilation is done entirely with Ant


感谢对前面问题的回答,以及 sonatype 支持人员的一些建议,我刚刚有了我的第一个“非失败”。这是mvn deploy 的当前输出:

[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-metadata.xml
  • 0.1.2-SNAPSHOT/maven-metadata.xml
  • 0.1.2-SNAPSHOT/xbnjava-0.1.2-20140717.010135-5.pom

在浏览器中实际查看该目录时,我会看到以下文件:

  • maven-metadata.xml(所有文件也有md5sha1版本)
  • 0.1.2-SNAPSHOT/maven-metadata.xml
  • 0.1.2-SNAPSHOT/xbnjava-0.1.2-20140716.174151-1.pom

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

  • xbnjava-0.1.2.jar
  • xbnjava-0.1.2-sources.jar
  • xbnjava-0.1.2-javadoc.jar

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

在 POM 中,我有这个属性

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

还有这个 plugins 块(它是 profiles 部分的子集),其中包含三个工件,每个工件都明确指向这三个 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 支持人员还建议考虑使用"minimal Maven" idea,它完全避免了 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>

【问题讨论】:

  • 1.对于“20140717”问题,您与服务器处于同一时区吗? 2. 有没有用另一台电脑试试看能否下载依赖?
  • @coolcfan 还没有准备好回答这个问题,因为我还没有上传我期望的文件(无论日期/时间如何)......
  • @coolcfan 实际上,他们现在似乎在那里:oss.sonatype.org/content/repositories/snapshots/com/github/…

标签: java maven ant


【解决方案1】:

您正在将工件附加到 release-sign-artifacts 配置文件中,当您运行“mvn deploy”命令时,该配置文件可能已禁用。尝试运行 mvn deploy -Drelease=true 或将 release-sign-artifacts 配置文件移动到主要的 .pom 部分。完全不确定您是否需要单独的个人资料。

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

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

【讨论】:

  • 就是这样。出色的。我即将写一个总结我所做的答案。现在进入下一个问题......
【解决方案2】:

这是我所做的更改,正如@AlexeyGavrilov's answer 中所建议的那样:

原文:

<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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 2023-03-18
    • 2014-09-06
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多