检查私有存储库中是否存在工件或依赖项

Check if artifact or dependency exist in a private repository

这是我的生成 JAR 工件 的 POM 文件,它存储在私有存储库 中,带有 Nexus存储库

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.home.mac</groupId>
  <artifactId>hyper-dev</artifactId>
  <version>0.0.1</version>
  <build>
    <sourceDirectory>src</sourceDirectory>

    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>  
  </build>

  <dependencies>
    <dependency>
        <groupId>org.home.mac</groupId>
        <artifactId>hyper-test-linux</artifactId>
        <version>0.3.5</version>
    </dependency>
  </dependencies>
</project>

我想检查两件事:

可以吗?

您可以使用 Nexus' Rest Api 检查工件是否存在。

例如,url

http://<your private nexus server>:8081/service/rest/beta/search/assets?group=org.home.mac&name=hyper-dev&version=0.0.1&maven.extension=jar&maven.classifier

将显示版本 0.0.1 中的工件 hyper-dev 是否在您的私人 Nexus 中可用。

如果你想自动化这个过程,你可以使用像 wgetcurl 这样的命令行工具来访问 Rest Api,如上面链接的文档所示。

备注:我想重复khmarbaise的评论,通常不可能上传已发布工件到 Nexus 如果它已经存在于存储库中。如果你想再次上传它,你必须增加版本并通过这样做创建一个新的工件。更新现有工件将是一个不需要的功能,因为 Maven 假设下载的工件永远不会更改并将它们缓存在每台机器上。

Snapshot artifacts 其实可以更新,但是你问的是 released artifacts。

对于 Nexus2(以 org.jboss.security:jboss-negotiation-toolkit:3.0.2.Final 为例)

curl -I -s -u admin:admin123 http://mynexusserver/service/local/repositories/mymavenrepo/content/org/jboss/security/jboss-negotiation-toolkit/3.0.2.Final/jboss-negotiation-toolkit-3.0.2.Final.war | grep HTTP

这将打印 "HTTP/1.1 200 OK" 如果找到,"HTTP/1.1 404 Not Found" 如果找不到