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
Maven:如何导入pom类型的依赖项?_Maven_Dependencies_Pom.xml_Byte Order Mark - Fatal编程技术网

Maven:如何导入pom类型的依赖项?

Maven:如何导入pom类型的依赖项?,maven,dependencies,pom.xml,byte-order-mark,Maven,Dependencies,Pom.xml,Byte Order Mark,我正在尝试将java应用程序迁移到maven。到目前为止,有一些依赖项已作为jar文件提供。其中一个依赖项是jung2,可从maven存储库获得: 我需要所有提供的模块,但我不知道如何在我的pom.xml中正确声明此依赖关系,以便下载所有相应的jar文件,并在编译时提供类 这就是我的pom.xml文件现在的样子: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/

我正在尝试将java应用程序迁移到maven。到目前为止,有一些依赖项已作为
jar
文件提供。其中一个依赖项是
jung2
,可从maven存储库获得:

我需要所有提供的模块,但我不知道如何在我的
pom.xml
中正确声明此依赖关系,以便下载所有相应的
jar
文件,并在编译时提供类

这就是我的
pom.xml
文件现在的样子:

<?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>groupId</groupId>
    <artifactId>myProject</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencyManagement>
        <dependencies>
            <!-- https://mvnrepository.com/artifact/net.sf.jung/jung2 -->
            <dependency>
                <groupId>net.sf.jung</groupId>
                <artifactId>jung2</artifactId>
                <version>2.0.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement> 
</project>
我收到一个关于缺少版本的错误。但据我所知,这不应该是必要的,因为
依赖管理
?如果我还添加了
2.0.1
,则会收到以下错误消息:


找不到net.sf.jung:jung2:jar:2.0.1

dependencyManagement
标记通常用于maven中的多模块项目(在该项目中,您将具有父子关系)

如果在
dependencyManagement
标记中指定任何依赖项,则它实际上不会下载依赖项。 将依赖项放在这个标记中仅仅意味着这个依赖项可用于(下载/使用)子pom。子pom必须显式地提供
groupId
artifactId
坐标,以下载并使用jar编译其类

如果您只有一个单模块项目(看起来您的项目是一个单模块项目),那么您可以通过不使用
dependencyManagement
标记来解决此问题。 只需将JAR放在
依赖项
标记中即可

例如:

<dependencies>
    <dependency>
        <groupId>com.abc</groupId>
        <artifactId>def</artifactId>
        <version>1.0.0</version>
        <type>pom</type>       // This will now download the pom and its associated transitive dependent jars
    </dependency>
    <dependency>
        <groupId>com.pqr</groupId>
        <artifactId>xyz</artifactId>
        <version>1.0.0</version>
        <type>pom</type>    // This will now download the pom and its associated transitive dependent jars
    </dependency>
</dependencies>

com.abc
def
1.0.0
pom//现在将下载pom及其相关的可传递依赖jar
com.pqr
xyz
1.0.0
pom//现在将下载pom及其相关的可传递依赖jar

正如我之前所说的,如果您有一个多模块项目,那么使用
DependencyManager
标记将非常有意义,而这不是您的情况。

这是在
部分中,因此您需要在其外部添加一个
引用它,或者将其从依赖关系管理中删除。参考@Tunaki谢谢你的回答,我编辑了我的原始帖子。在
dependencyManager
之外添加依赖项到目前为止还不起作用。是的,您需要添加类型(可能还有范围,我不确定)。因此我应该将
依赖项
dependencyManager
部分复制到
依赖项
?这也不起作用,当我尝试编译/打包、添加Tunaki提到的类型并尝试向mvn命令添加“-U”以强制Maven重新解析依赖项时,无法找到相应的包。
<dependencies>
    <dependency>
        <groupId>com.abc</groupId>
        <artifactId>def</artifactId>
        <version>1.0.0</version>
        <type>pom</type>       // This will now download the pom and its associated transitive dependent jars
    </dependency>
    <dependency>
        <groupId>com.pqr</groupId>
        <artifactId>xyz</artifactId>
        <version>1.0.0</version>
        <type>pom</type>    // This will now download the pom and its associated transitive dependent jars
    </dependency>
</dependencies>