我正在用maven构建一个简单的项目。我无法让它构建,因为缺少传递依赖,即objenesis 1.0
。
我在调试模式下运行maven并收到此消息:
[DEBUG] =======================================================================
[WARNING] The POM for org.jmock:jmock-junit4:jar:2.6.0 is invalid, transitive dependencies (if any) will not be available: 1 problem was encountered while building the effective model for org.jmock:jmock-junit4:2.6.0
[ERROR] Invalid packaging for parent POM org.jmock:jmock-parent:2.6.0, must be "pom" but is "jar" @ org.jmock:jmock-parent:2.6.0
...
当我看到jmock-parent时,我似乎无法找到对pom或jar类型的引用。
我该如何解决这个问题?
Nota:我们使用公司的nexus来获取依赖项。
的pom.xml
<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>Poc</groupId>
<artifactId>Poc</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.jmock</groupId>
<artifactId>jmock-junit4</artifactId>
<version>2.6.0</version>
</dependency>
</dependencies>
</project>
JMock的父-2.6.0.pom
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.jmock</groupId>
<artifactId>jmock-parent</artifactId>
<version>2.6.0</version>
<description>POM was created by Sonatype Nexus</description>
</project>
答案 0 :(得分:4)
听起来好像依赖没有正确下载。我会尝试从本地M2存储库中删除org.jmock目录,让Maven尝试重新下载该jar。
修改:当您在文本编辑器中查看M2_REPO\org\jmock\jmock-parent\2.6.0\jmock-parent-2.6.0.pom
时,它是否明确指出<packaging>pom</packaging>
?您可能希望确保Nexus仓库中的依赖项也正确无误。我只是从Maven Central中取出了依赖,并没有遇到任何问题。
编辑2 :如果无法从Maven Central下载,Nexus可能会自动为您创建父pom。您的Nexus安装是否已配置为从Maven Central下载依赖项?你有没有手动mvn deploy:deploy-file
你的jmock-junit4.jar到你的Nexus回购?我确信有办法强制Nexus更新那个pom,或者你可以通过从maven central下载它然后运行上面列出的mvn deploy
命令来手动部署正确的父pom。