Maven:如何导入pom类型的依赖项?
我正在尝试将java应用程序迁移到maven。到目前为止,有一些依赖项已作为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/
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>