Maven:尽管没有在有效的POM中显示,但参考文库仍然存在

时间:2012-01-17 16:01:47

标签: eclipse maven-2

在导入我的Maven项目之前,我使用以下代码构建它:mvn clean install

然后我按如下方式创建必要的Eclipse文件:mvn -Dwtpversion = 2.0 eclipse:eclipse

我注意到Eclipse中的Referenced Libraries包含这个jar:validation-api-1.0.0.GA.jar

然而,当我在Eclipse中查看有效的POM时,没有出现这样的jar。因此,我想知道如何将这个jar添加到我的Eclipse类路径中?

我需要这个jar用于我正在使用的@Valid注释,我需要Maven知道它。如果我使用Maven构建我的类路径文件,那么Maven怎么会不知道呢?

由于

4 个答案:

答案 0 :(得分:1)

检查你的pom中的Dependency hierarchy-tab(在Eclipse中),也许jar是你使用的其他jar的依赖。

在这种情况下,引用位于项目的Java Build Path中,并且由于 -Dwtpversion = 2.0 - 参数而在创建项目时添加了

答案 1 :(得分:1)

Maven还会在您的类路径中添加主依赖项的子依赖项(这些依赖项是您在pom.xml中专门声明的那些)。做一个

mvn dependency:tree -Dverbose

使用特定的pom声明的依赖项来查看其他依赖项。

另外,如果您只想查看某个依赖项的子依赖项,称为x.y.z,您可以这样做:

mvn dependency:tree -Dverbose -Dincludes=x.y.z

(其中x.y是groupId,z是artefactId)

答案 2 :(得分:0)

您的一个项目依赖项可能具有此jar文件的依赖项。检查图形依赖关系图或只搜索它,找出依赖于此的项目依赖关系,并在可能的情况下使用maven的'exclude'标记排除此依赖关系。

您可以使用maven依赖项排除,如下所示:

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>sample.ProjectA</groupId>
      <artifactId>Project-A</artifactId>
      <version>1.0</version>
      <scope>compile</scope>
      <exclusions>
        <exclusion>  <!-- declare the exclusion here -->
          <groupId>sample.ProjectB</groupId>
          <artifactId>Project-B</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>
  </dependencies>
</project>

来源:Maven - Dependency Exclusions

答案 3 :(得分:0)

我遇到了同样的问题。经过一些研究后,我意识到父pom的传递依赖性可能不会出现在Effective POM中,但会出现在Reference库中。

因为当我运行以下命令时引发了整个混乱

mvn dependency:tree -Dincludes=X(其中X是我正在寻找的jar的group-id)

它没有提到父pom,而是提到父pom中的依赖,它将X带到表中。 (这是有道理的,因为我们从父pom继承)。