我有一个 Maven 项目,到目前为止它可以毫无问题地编译。今天,当我跑步时mvn clean package -U
,我得到:
[错误] 无法在项目 myproj 上执行目标:无法解析项目 org.myorg.myproj:myproj:jar:1.0-SNAPSHOT 的依赖项:无法解析以下工件:javax.servlet:javax.servlet-api:src :sources:3.0.1, org.eclipse.jetty:jetty-servlet:src:sources:8.1.2.v20120308, org.eclipse.jetty:jetty-server:src:sources:8.1.2.v20120308, org.eclipse .jetty:jetty-webapp:src:sources:8.1.2.v20120308, commons-io:commons-io:src:sources:2.4: 找不到工件 javax.servlet:javax.servlet-api:src:sources:3.0 .1 在 MyRepo (http://maven.myorg.org:9001/nexus/content/repositories/myrepo/) -> [帮助 1]
我尝试使用新的本地 Maven 存储库 ( rm -fr ~/.m2/repository
),但这并没有任何区别。
为什么 Maven 会尝试查找source
/src
人工制品?问题可能出在哪里的任何想法?
编辑:我的依赖项(如使用所示mvn help:effective-pom
)没有任何source
分类器。例如,jetty-server
错误消息中提到的依赖项如下所示:
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>8.1.2.v20120308</version>
<scope>compile</scope>
</dependency>
解决方案:在@AlessandroSantini 和@brian-topping 的帮助下,我终于确定了问题所在。我的一个间接依赖项有一个<classifier>sources</classifier>
and <type>src</type>
。(mvn help:effective-pom
没有显示这些间接依赖关系,并且mvn dependency:tree
也因上述错误消息而失败;最终,agrep -r 'jetty-server' ~/.m2/repository/ -C 3
识别出具有混乱依赖关系的工件。)
事实证明,我自己的一个SBT项目需要(不存在的)源工件来实现其依赖项之一:我使用了SBTwithSources()
,而我应该使用sbteclipeEclipseKeys.withSource := true
来获取 Eclipse 中的源。