我们使用maven 2.2.1来构建项目。主pom列出了构建的模块(一些WAR项目和一些“普通”JAR)。
最近我们在其中一个WAR项目中添加了一个新的依赖项:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.2.6</version>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
<exclusion>
<artifactId>commons-codec</artifactId>
<groupId>commons-codec</groupId>
</exclusion>
</exclusions>
</dependency>
在开发人员计算机上从命令行( mvn clean package )本地构建时,它可以正常工作。但是当构建在自动构建系统(由Hudson)构建时, httpcore JAR(它是 httpclient 的依赖关系)未打包到最终的WAR中。没有报告错误,只缺少JAR。
maven settings.xml 文件是相同的(除了repo路径 - 唯一值得注意的非默认选项是 offline = true )。可能有什么不对?
答案 0 :(得分:2)
我唯一想到的是你的构建机器有m2 repo中的一个模块的旧版本。
清除整个$HOME/.m2/repository
(或保留回购的地方),然后重试。
答案 1 :(得分:1)
发现问题。 (并解决了)
简而言之:repo中的httpclient.jar没有.pom文件。 (所以maven不知道它有依赖关系)
长:
它是一个脱机存储库,因此必须手动修复缺少的工件。问题是我首先将文件复制到错误的文件夹而maven没有&#34;请参阅&#34;他们。然后&#34;盲目地&#34;遵循其建议:
Missing:
----------
1) org.apache.httpcomponents:httpclient:jar:4.2.6
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=org.apache.httpcomponents -DartifactId=
httpclient -Dversion=4.2.6 -Dpackaging=jar -Dfile=/path/to/file
那只是将jar文件复制到repo,而不是pom。
所以我只是将 httpclient 的完整文件夹复制到了repo(及其父级和其他一些maven然后抱怨的相关文件)。
我想这是一种用户错误。