9

我已经将一个多模块项目作为 a 上传到中央,bundle.jar并且出现了这个问题: nexus 说文件丢失所以 Nexus 找不到pom.asc.

但是,如果文件在下可用,怎么会丢失文件可用

4

4 回答 4

1

根据您的评论,执行以下步骤后出现此 Nexus 错误:

  • mvn release:prepare release:perform
  • mvn clean repository:bundle-create gpg:sign,它创建*-0.9.12.pom.asc文件和*-bundle.jar

该错误很可能与上述步骤有关,这可能不是在这种情况下应用的正确顺序,因为:

  • maven-repository-plugin插件及其create-bundle目标将为 Maven 项目创建上传包。但是请注意,生成的*-bundle.jar文件不会附加到 Maven 构建(根据其来源),而只是在项目target文件夹中生成文件
  • maven-gpg-plugin它的目标sign是使用 GnuPG 签署项目工件、POM 和附加工件以进行部署
  • clean您在执行的第二步中调用阶段,这基本上意味着target在操作后删除文件夹的内容release:perform

像这样:

  • 您应该验证bundlejar 的内容(由于clean调用)
  • 您实际上没有签署 jar 文件(由调用清理clean)或捆绑包(如上面的描述),尽管提到的错误涉及 POM 文件而不是 jar 文件
  • 您正在gpg:sign从命令行执行,尽管官方示例说明:

目前,这并不容易实现。gpg 在 gpg 运行时对附加到构建的工件进行签名。但是,我们希望将 gpg “注入”到阶段中。可能
的工作 是:

mvn verify gpg:sign install:install deploy:deploy   

但是,如果在验证阶段之后为阶段配置了其他插件,它们将不会运行。

(注:粗体字是我的)。

因此,我将审查部署过程并遵循签署项目工件的标准程序。

于 2016-10-08T22:41:44.783 回答
1

对我来说,丢失的*.asc文件会导致签名错误。我已经安装了 gpg 密钥并将其发送到 ssh 服务器。

根据Deploying to OSSRH with Apache Maven-Introduction,我们需要添加插件nexus-staging-maven-pluginnexus-staging-maven-plugin. 然后,当你运行时maven clean deploy,它会将包释放到repo.maven.apache.org(半小时内)。

这是一个pom.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">
    ...
    <build>
        <plugins>
            ...
            <plugin>
                <groupId>org.sonatype.plugins</groupId>
                <artifactId>nexus-staging-maven-plugin</artifactId>
                <version>1.6.7</version>
                <extensions>true</extensions>
                <configuration>
                    <serverId>ossrh</serverId>
                    <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                    <autoReleaseAfterClose>true</autoReleaseAfterClose>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-gpg-plugin</artifactId>
                <version>1.5</version>
                <executions>
                    <execution>
                        <id>sign-artifacts</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <distributionManagement>
        <snapshotRepository>
            <id>ossrh</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
        </snapshotRepository>
        <repository>
            <id>ossrh</id>
            <url>
                https://oss.sonatype.org/service/local/staging/deploy/maven2/
            </url>
        </repository>
    </distributionManagement>
</project>

行家settings.xml

<!--maven connect nexus need user and password-->
<settings>
    <servers>
        <server>
            <id>ossrh</id>
            <username></username>
            <password></password>
        </server>
    </servers>

    <profiles>
        <profile>
            <id>ossrh</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <gpg.passphrase>gpg.passphrase
                </gpg.passphrase>
            </properties>
        </profile>
    </profiles>
</settings>

于 2020-06-16T11:55:48.290 回答
1

除了存储库管理器中的活动选项卡之外,您还应该能够浏览到内容选项卡。检查一下,看看在你的 GAV 坐标的文件夹中你找到了所有的文件。暂存规则似乎没有找到该文件。它可能不存在(在存储库管理器上..不是您的本地文件系统!)

请查看我们的文档以获取有关如何使用 Maven 设置这一切的更多提示,包括演示视频和完整工作的示例项目。

此外,如果您遇到困难,请直接与我联系或在我们的 OSSRH jira 项目中提出问题,以便我调查具体部署。

于 2016-10-25T04:10:38.550 回答
0

我认为这个消息是错误的。这.asc不是必需的,我会发布一个错误并看看会发生什么。

于 2016-10-25T06:03:21.700 回答