Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解决POM中没有relativePath的模块依赖关系?_Java_Maven_Dependencies_Maven 3 - Fatal编程技术网

Java 如何解决POM中没有relativePath的模块依赖关系?

Java 如何解决POM中没有relativePath的模块依赖关系?,java,maven,dependencies,maven-3,Java,Maven,Dependencies,Maven 3,我正在从事一个项目,我们正在分析Maven Central工件中的依赖关系。我需要做的是使用org.apache.maven.plugins:maven dependency-plugin:3.1.1:tree将依赖项提取为GraphML,对于简单的项目来说这很容易 但是,对于在pom中具有依赖项但没有relativePath的项目,我无法解决这些依赖项: 我的示例是Apache Hivemind项目pom,模块部分: <modules> <module>fram

我正在从事一个项目,我们正在分析Maven Central工件中的依赖关系。我需要做的是使用
org.apache.maven.plugins:maven dependency-plugin:3.1.1:tree
将依赖项提取为GraphML,对于简单的项目来说这很容易

但是,对于在pom中具有
依赖项但没有
relativePath
的项目,我无法解决这些依赖项:

我的示例是Apache Hivemind项目pom,模块部分:

<modules>
    <module>framework</module>
    <module>xml</module>
    <module>annotations</module>
    <module>library</module>
    <module>jmx</module>
    <module>examples</module>
</modules>
我将所有这些依赖项下载到我的本地repo中


如何调用mvn,以便让它在本地repo(或我指定的任何repo)中查找依赖项?

一位同事建议我尝试一种稍微不同的方法:将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>

4.0.0
com.example
演示
0.0.1
org.apache.hivemind
hivemind框架
2.0-α-1

然后使用该临时POM作为-f参数。

如果未指定
标记,则它有一个默认值,即
。/POM.xml
?这被称为配置之上的约定。您是正确的,它默认为
。/pom.xml
,但是对于我下载以检查的工件,文件名永远不存在,mvn然后假设每个模块都作为我试图分析的g/a/v的子目录存在。
<?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>