在导入我的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怎么会不知道呢?
由于
答案 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>
答案 3 :(得分:0)
我遇到了同样的问题。经过一些研究后,我意识到父pom的传递依赖性可能不会出现在Effective POM中,但会出现在Reference库中。
因为当我运行以下命令时引发了整个混乱
mvn dependency:tree -Dincludes=X
(其中X是我正在寻找的jar的group-id)
它没有提到父pom,而是提到父pom中的依赖,它将X带到表中。 (这是有道理的,因为我们从父pom继承)。