gpt4 book ai didi

java - 如何使用Maven只签署三个jar并将它们推送到Maven Central?

转载 作者:行者123 更新时间:2023-11-30 03:49:33 31 4
gpt4 key购买 nike

更新:请参阅followup question

<小时/>

我有一个 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

    这部分已经完成并且运行良好。这三个 jar 是as required作者:Maven Central(向上滚动一点即可看到)。

  2. 将版本 checkin GitHub 并将构​​建目录上传到我的 Web 服务器。我也完成了这一步。

  3. mvn deploy:唯一需要做的就是签署三个 jar 并将它们推送到 Maven Central。这是我目前存在的祸根。

<小时/>

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

  1. Set up my project在索纳型,
  2. Created my public keygpg4win ( related documentation 在 sonatype 上)
  3. Downloadedinstalled Maven
  4. 设置我希望的是 correct settings.xml :

    <?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\programming\sandbox\settings.xml 中,因为我的每个项目都使用它。)

  • 至少设置我的 pom.xml 的开头,基于 the one in ez-vcard (如 the author's 有帮助 blog post 中引用)。我还用过Maven的introduction to the 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 中心?

    我真的很感激一些关于从这里该去哪里的建议。三天来我一直在研究 Maven 文档,我感到迷失和沮丧。这是我在过去几年里第三次尝试使用 Maven,每次都进展得很糟糕。

    (我最初尝试 fulfill Maven requirements with Ant tasks ,但我决定完全分离我的 Ant 构建和 Maven 签名 jars-and-push-to-Maven-Central 部分。这是为了学习新东西,但是还因为在 Ant 中实现 Maven 似乎不像纯粹的 Maven 那样是一个标准。)

    谢谢你帮助我。

    最佳答案

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

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

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

        <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 文件 here .

    你可以引用我自己的Maven项目设置github创建它是为了在 Maven 中心上传手动构建的 .jar 文件。

    关于java - 如何使用Maven只签署三个jar并将它们推送到Maven Central?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24771467/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com