Как мне разрешить зависимости, которые являются модулями и не имеют относительного пути в POM? - PullRequest
0 голосов
/ 21 января 2020

Я работаю над проектом, в котором мы анализируем отношения зависимостей в артефактах из Maven Central. Что мне нужно сделать, это извлечь зависимости как GraphML, используя org.apache.maven.plugins:maven-dependency-plugin:3.1.1:tree, и для простых проектов это просто.

Однако для проектов, которые имеют <module> зависимости , но не relativePath в pom, я не могу разрешить эти зависимости:

Мой пример - Apache pom проекта Hivemind, секция модулей:

<modules>
    <module>framework</module>
    <module>xml</module>
    <module>annotations</module>
    <module>library</module>
    <module>jmx</module>
    <module>examples</module>
</modules>

, что приводит к следующему выводу:

[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR]   The project org.apache.hivemind:hivemind-project:2.0-alpha-1 (/data/scratch/artifacts/org/apache/hivemind/hivemind-project/2.0-alpha-1/hivemind-project-2.0-alpha-1.pom) has 6 errors
[ERROR]     Child module /data/scratch/artifacts/org/apache/hivemind/hivemind-project/2.0-alpha-1/framework of /data/scratch/artifacts/org/apache/hivemind/hivemind-project/2.0-alpha-1/hivemind-project-2.0-alpha-1.pom does not exist
[ERROR]     Child module /data/scratch/artifacts/org/apache/hivemind/hivemind-project/2.0-alpha-1/xml of /data/scratch/artifacts/org/apache/hivemind/hivemind-project/2.0-alpha-1/hivemind-project-2.0-alpha-1.pom does not exist
[ERROR]     Child module /data/scratch/artifacts/org/apache/hivemind/hivemind-project/2.0-alpha-1/annotations of /data/scratch/artifacts/org/apache/hivemind/hivemind-project/2.0-alpha-1/hivemind-project-2.0-alpha-1.pom does not exist
[ERROR]     Child module /data/scratch/artifacts/org/apache/hivemind/hivemind-project/2.0-alpha-1/library of /data/scratch/artifacts/org/apache/hivemind/hivemind-project/2.0-alpha-1/hivemind-project-2.0-alpha-1.pom does not exist
[ERROR]     Child module /data/scratch/artifacts/org/apache/hivemind/hivemind-project/2.0-alpha-1/jmx of /data/scratch/artifacts/org/apache/hivemind/hivemind-project/2.0-alpha-1/hivemind-project-2.0-alpha-1.pom does not exist
[ERROR]     Child module /data/scratch/artifacts/org/apache/hivemind/hivemind-project/2.0-alpha-1/examples of /data/scratch/artifacts/org/apache/hivemind/hivemind-project/2.0-alpha-1/hivemind-project-2.0-alpha-1.pom does not exist

У меня есть все эти зависимости, загруженные в мое локальное репо.

Как мне вызвать mvn, чтобы я мог посмотреть его в моем локальном репо (или любом репо, который я укажу, в этом отношении) для зависимостей?

1 Ответ

0 голосов
/ 21 января 2020

Коллега предложил мне попробовать немного другой подход: сделать артефакт в POM зависимостью в новом (временном) POM.

То есть для org.apache.hivemind:hivemind-framework:2.0-alpha-1 создайте временное POM следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<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>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1</version>

    <dependencies>
        <dependency>
            <groupId>org.apache.hivemind</groupId>
            <artifactId>hivemind-framework</artifactId>
            <version>2.0-alpha-1</version>
        </dependency>
    </dependencies>
</project>

и затем использовать этот временный POM в качестве аргумента -f.

...