我有一个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:来源:MyRepo中的3.0.1(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>
和<type>src</type>
。 (mvn help:effective-pom
没有显示这些间接依赖关系,mvn dependency:tree
也失败了上述错误消息;最终,grep -r 'jetty-server' ~/.m2/repository/ -C 3
使用混乱的依赖关系识别了工件。)
事实证明,我自己的一个SBT项目需要其中一个依赖项的(不存在的)源工件:我使用SBT's withSources()
我应该使用sbteclipe's EclipseKeys.withSource := true
来在Eclipse中获取源代码。
答案 0 :(得分:2)
您对公共快照有任何依赖吗?我将看一下mvn dependency:tree
的输出,看看你是否能找到一个以某种方式包含源的传递依赖。也许自上次构建以来,其中一个传递已经发生了变化,他们搞砸了。