我正在将 Apache CXF 2.7.5 升级到 3.0.2 ,但我遇到了以下问题。
当我包含依赖
时<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf</artifactId>
<version>3.0.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
到我的 pom.xml 我没有看到任何 .jar 文件下载到我的项目中。项目没有错误。
我正在使用 Maven 3.2.3 与 Eclipse Juno Release2 和 m2e 1.3.1
为什么<type>pom</type>
没有解析为框架的相应jar文件?
<type>pom</type>
依赖关系是否假设自动提供相应的库?如果不是,使用它们有什么好处?
更新
这就是我的 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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test.sysman</groupId>
<artifactId>serviceWrapper</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>serviceWrapper Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf</artifactId>
<version>3.0.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf</artifactId>
</dependency>
</dependencies>
<build>
<finalName>serviceWrapper</finalName>
<pluginManagement>
<plugins></plugins>
</pluginManagement>
<plugins></plugins>
</build>
</project>
由于
答案 0 :(得分:2)
您的依赖范围是导入的。这意味着它必须是依赖管理声明的一部分。 使用依赖关系管理,您不能直接下载依赖关系。这是一种确保需要特定版本的依赖项的方法。如果您声明
,那么在依赖关系部分中进一步降低您的pom <groupId>org.apache.cxf</groupId>
<artifactId>cxf</artifactId>
没有指定版本,maven知道要下载哪些工件。还控制传递依赖项中的版本。
您的pom可能是指物料清单(BOM)
答案 1 :(得分:1)
你在哪里加上这个陈述?
<scope>import</scope>
仅在<dependencyManagement>
部分内有效,即
<dependencyManagement>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf</artifactId>
<version>3.0.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencyManagement>
此外,它不会下载依赖项本身,而是扩展引用的pom。
如果您只需要pom,请排除<scope>import</scope>
。