找到其他项目使用此项目作为maven依赖项?

Kie*_*ran 2 java artifactory maven

我们使用Artifactory来存储我们的maven生成的java工件.我们有许多相互依赖的相互关联的项目.是否可以使用maven或Artifactory来选择一个工件并查找具有该依赖关系的所有项目?

在下面的示例中,我想找到哪些项目使用artifact1 v1.0.0.我希望能够使用maven/Artifactory来查找artifact2依赖于此版本的依赖项,但找不到artifact3/4这一事实.理想情况下,如果我只是在寻找artifact1的使用而不管版本,那么找到artifact2也会很好.

    <project>
        <groupId>mygroup</groupId>
        <artifactId>artifact1</artifactId>
        <version>1.0.0</version>
    </project>


    <project>
        <groupId>mygroup</groupId>
        <artifactId>artifact2</artifactId>
        <version>1.0.0</version>

        <dependencies>
            <dependency>
                <groupId>mygroup</groupId>
                <artifactId>artifact1</artifactId>
                <version>1.0.0</version>
            </dependency>
        </dependencies>
    </project>

    <project>
        <groupId>mygroup</groupId>
        <artifactId>artifact3</artifactId>
        <version>1.0.0</version>

        <dependencies>
            <dependency>
                <groupId>mygroup</groupId>
                <artifactId>artifact1</artifactId>
                <version>1.1.0</version>
            </dependency>
        </dependencies>
    </project>

    <project>
        <groupId>mygroup</groupId>
        <artifactId>artifact4</artifactId>
        <version>1.0.0</version>

        <dependencies>
            <dependency>
                <groupId>mygroup</groupId>
                <artifactId>otherartifact</artifactId>
                <version>1.0.0</version>
            </dependency>
        </dependencies>
    </project>
Run Code Online (Sandbox Code Playgroud)

dan*_*anf 5

这几乎是您首先使用Artifactory的主要原因之一.Artifactory以其AQL的形式提供了非常广泛的搜索功能,它完全符合您的要求.

以您的案例为例运行以下内容:

builds.find(
        {"module.dependency.item.name":{"$match":"*artifact1*"}}
    ).include("module.artifact.name")
Run Code Online (Sandbox Code Playgroud)

将返回所有Artifact1具有依赖关系的构建(您还可以添加一个"$and"子句将其限制为特定版本Arifact1),最后的include将返回属于Artifact1作为依赖项的模块一部分的所有工件(这样就在哪里你会看到Artifact2你的情况)

下面是我在一个简单的maven构建上运行此查询时得到的一个示例输出,该构建称multi-module-build有几个模块,其中一个(multi3)有一个依赖项multi1:

"results" : [ {
    "build.created" : "2016-03-10T09:08:51.283+02:00",
    "build.created_by" : "admin",
    "build.name" : "multi-module-build",
    "build.number" : "10",
    "build.url" : "http://localhost:9090/jenkins/job/multi-shmulti/10/",
    "modules" : [ {
    "artifacts" : [ {
            "artifact.name" : "multi3-3.6-SNAPSHOT.war"
        }, {
            "artifact.name" : "multi3-3.6-SNAPSHOT.pom"
        } ]
    } ]
 } ]
Run Code Online (Sandbox Code Playgroud)