Maven从WAR

时间:2015-10-15 20:26:21

标签: maven war

我们使用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 )。可能有什么不对?

2 个答案:

答案 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然后抱怨的相关文件)。

我想这是一种用户错误。