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

如何使用Maven只签署三个JAR并将其推送到Maven Central?

昌砚
2023-03-14

更新:见后续问题

我有一个Java库,它的构建过程完全是用蚂蚁编写的。项目的沙盒(我编辑代码的源代码目录)是

R:\jeffy\programming\sandbox\xbnjava\

它的构建(输出)目录是

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

这就是我的目标:

>

  • 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所需的(向上滚动一点即可查看)。

将版本签入GitHub并将构建目录上载到我的web服务器。我也完成了这一步。

mvn deploy:唯一需要做的就是签署三个JAR并将其推送到Maven Central。这是我目前的生活祸根。

以下是我迄今为止所采取的步骤:我做到了

>

<?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>sonatype-nexus-snapshots</id>
         <username>MY_SONATYPE_USERNAME</username>
         <password>MY_SONATYPE_PASSWORD</password>
      </server>
      <server>
         <id>sonatype-nexus-staging</id>
         <username>MY_SONATYPE_USERNAME</username>
         <password>MY_SONATYPE_PASSWORD</password>
      </server>
   </servers>
   <pluginGroups></pluginGroups>
   <proxies></proxies>
   <mirrors></mirrors>
   <profiles></profiles>
</settings>

(这个文件存储在R:\jeffy\编程\沙盒\settings.xml中,因为我的每个项目都使用它。)

这些部分,在顶部,我相信我理解:

<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文档中畅游了三天了,我迷失了方向,感到沮丧。这是我在过去几年里与Maven的第三次尝试,每次都非常糟糕。

(我最初试图通过Ant任务来满足Maven的要求,但我决定将我的Ant构建和Maven登录罐子和推送到Maven-Central部分完全分开。这是为了学习新的东西,但也是因为似乎在Ant中实现Maven与其说是标准,不如说是纯粹的Maven。)

谢谢你帮助我。

共有1个答案

姚文轩
2023-03-14

如果你在Maven之外构建你的工件,你需要在你的应用程序中引用它们。pom文件

首先,将项目的打包设置为pom,这样Maven就不会试图编译任何东西。

然后使用build helper maven插件将工件文件附加到项目中。下面是一个例子:

    <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文件。

 类似资料:
  • 问题内容: 更新:请参阅后续问题 我有一个Java库,其构建过程完全用Ant编写。该项目的沙箱(源代码,我在其中编辑代码)是 其构建(输出)目录为 这是我的目标是: :从头开始构建项目,包括创建这三个jar 被放入 这部分已经完成并且运行良好。这三个罐子是Maven Central 所要求的(向上滚动一点即可看到它)。 将版本检入GitHub并将构建目录上载到我的Web服务器。我也已经完成了这一步

  • 我有一个pom.xml文件,这里有一些第三方jar依赖项和一些项目相关的jar。我只需要将第三方jar部署到artifactory中,而不是所有的jar。

  • 我想知道如何用电子邮件数字证书签名,然后使用CURL发送这个签名的电子邮件消息。 下面是一个简单的文本/普通电子邮件的例子,我想签署。 我将整个消息放在一个名为的文件中,然后使用CURL发送它。 砰。仅此而已。 下面的链接描述了如何使用OpenSSL对mime消息进行签名。 https://www.misterpki.com/openSSL-smime/ RFC8551第3.5、3.5.1和3.5

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

  • 我在Eclipse中使用Maven。是否可以构建项目,然后将构建的WAR文件部署到Tomcat服务器? 我使用Windows。我可以构建文件,也可以手动部署在服务器上。但是我想在构建操作后自动部署文件,它不起作用。我是Maven的新手。 我应该在运行配置中设置一些内容吗?我设定了安装价值的目标。 pom。xml 此外,我更改了设置。路径中的xml文件。平方米/设置。xml。 设置。xml

  • 我正在开发一个由以下结构组成的web应用程序: 在此输入图像说明 当我执行mvn clean package时,webapp中没有文件打包到jar中。