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

时间:2018-05-23 15:37:47

标签: maven repository pom.xml nexus artifact

这是我的POM文件生成 JAR工件存储在私人存储库 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>

我想检查两件事:

  • 如果我要安装 hyper-dev-0.0.1 工件存在于我的私有maven存储库中。
  • 如果我的私人maven存储库中存在与 artifactID:hyper-test-linux-0.3.5 的依赖关系。

有可能吗?

2 个答案:

答案 0 :(得分:1)

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

例如,网址

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

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

如果要自动执行此过程,可以使用wgetcurl等命令行工具访问Rest Api,如上面链接的文档所示。

备注:我想重复khmarbaise的评论,如果它已经存在于Nexus,通常无法将已发布的工件上传到Nexus库。如果要再次上载,则必须增加版本,然后创建新工件。更新现有工件将是一项不必要的功能,因为Maven假定下载的工件永远不会更改并在每台计算机上本地缓存它们。

实际上可以更新

快照工件,但是您已经询问了已发布的工件。

答案 1 :(得分:0)

对于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”