gpt4 book ai didi

java - 后续第 2 部分——使用 Maven 仅对 jar 进行签名并将其部署到 Maven Central。构建和编译完全由 Ant 完成

转载 作者:行者123 更新时间:2023-11-29 05:20:55 25 4
gpt4 key购买 nike

这是跟进: 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 block (它是 profiles 部分的子集),它包含三个 Artifact ,每个都明确指向这三个 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

jar 在里面

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>

最佳答案

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

时间戳没问题。这就是 Maven 存储库存储 SNAPSHOT 的方式。

Maven 的学习曲线很陡峭,但一旦您理解了基本概念,它就可以正常工作。

关于java - 后续第 2 部分——使用 Maven 仅对 jar 进行签名并将其部署到 Maven Central。构建和编译完全由 Ant 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24793800/

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