小编典典

如何使用Maven仅签名三个罐子并将它们推到Maven Central?

java

更新:请参阅 后续问题


我有一个Java库,其构建过程完全用Ant编写。该项目的沙箱(源代码,我在其中编辑代码)是

R:\jeffy\programming\sandbox\xbnjava\

其构建(输出)目录为

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

这是我的目标是:

  1. ant cleanpublish:从头开始构建项目,包括创建这三个jar

    • mylibrary-0.1.1.jar
    • mylibrary-0.1.1-sources.jar
    • mylibrary-0.1.1-javadoc.jar

被放入

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

这部分已经完成并且运行良好。这三个罐子是Maven Central
所要求的(向上滚动一点即可看到它)。

  1. 将版本检入GitHub并将构建目录上载到我的Web服务器。我也已经完成了这一步。

  2. mvn deploy唯一 需要做的就是在三个罐子上签名并将它们推到Maven Central。这是我存在的当前祸根。


这些是我到目前为止所采取的步骤:

  1. 以sonatype 设置我的项目
  2. 使用gpg4win 创建了我的公钥有关sonatype的相关文档
  3. 下载安装了Maven
  4. 设置我 希望正确的settings.xml
    <?xml version="1.0" encoding="UTF-8"?>
    

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


    sonatype-nexus-snapshots
    MY_SONATYPE_USERNAME
    MY_SONATYPE_PASSWORD


    sonatype-nexus-staging
    MY_SONATYPE_USERNAME
    MY_SONATYPE_PASSWORD






(此文件存储在中R:\jeffy\programming\sandbox\settings.xml,因为我的每个项目都使用该文件。)

  1. 至少pom.xml根据其中的一个ez-vcard设置my的开头(如作者的实用博客文章中所述)。我还使用了Maven 对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.xbn</groupId>
   <artifactId>xbnjava</artifactId>
   <packaging>jar</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>

   <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>
   </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.apache.maven.plugins</groupId>
                 <artifactId>maven-gpg-plugin</artifactId>
                 <version>1.4</version>
                 <executions>
                    <execution>
                       <id>sign-artifacts</id>
                       <phase>package</phase>
                       <goals>
                          <goal>sign</goal>
                       </goals>
                    </execution>
                 </executions>
              </plugin>
           </plugins>
        </build>
     </profile>
  </profiles>
</project>

我需要做什么才能完成POM,其路径是

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

因此它签名并推送了这三个jar文件,位于

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

到Maven Central?

我真的很感谢从这里出发的一些建议。三天来,我一直只浏览Maven文档,却迷失了自己,感到沮丧。这是我过去几年中对Maven的第三次尝试,每次尝试都非常糟糕。

(我最初尝试通过Ant任务满足Maven要求,但是我决定完全将我的Ant构建和Maven的“罐子和推送到Maven-
Central”部分分开。这是要学习一些新知识,但是也因为似乎在Ant中实现Maven比纯Maven少了一个标准。)

感谢你们对我的帮助。


阅读 303

收藏
2020-11-26

共1个答案

小编典典

如果要在Maven之外构建工件,则需要在.pom文件中引用它们。

首先,将packaging项目的设置为,pom以便Maven不会尝试编译任何内容。

然后使用build-helper-maven-plugin将您的工件文件附加到项目。这是一个例子:

    <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>build/xbnjava-0.1.1/download/mylibrary-0.1.1.jar</file>
                            <type>jar</type>
                        </artifact>
                        <artifact>
                            <file>build/xbnjava-0.1.1/download/mylibrary-0.1.1-javadoc.jar</file>
                            <type>jar</type>
                            <classifier>javadoc</classifier>
                        </artifact>
                        <artifact>
                            <file>build/xbnjava-0.1.1/download/mylibrary-0.1.1-sources.jar</file>
                            <type>jar</type>
                            <classifier>sources</classifier>
                        </artifact>
                    </artifacts>
                </configuration>
            </execution>
        </executions>
    </plugin>

最后,distributionManagement按照此处的指定,将其添加到您的.pom文件中。

您可以在github上参考我自己的Maven项目设置,该项目的创建是为了在Maven Central上载手动构建的.jar文件。

2020-11-26