Maven 没有将一些 JAR 复制到 WEB-INF/lib

Posted

技术标签:

【中文标题】Maven 没有将一些 JAR 复制到 WEB-INF/lib【英文标题】:Maven not copying some JAR to WEB-INF/lib 【发布时间】:2013-04-12 07:37:06 【问题描述】:

我在 Eclipse 中使用 Maven 创建了一个 Web 项目。我需要该项目的 pentaho 库 jar,这是我的依赖项

<dependency>
    <groupId>pentaho-library</groupId>
    <artifactId>libbase</artifactId>
    <version>1.2.8</version>
    <optional>true</optional>
</dependency>

当我运行mvn:compilemvn eclipse:eclipse 时,它正在下载maven_repo 本地目录中的JAR 文件 我正在使用以下战争插件

        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>

        </plugin>

问题是,当我运行mvn war:war 创建war 文件时,它没有将libbase-1.2.8.jar 复制到WEB-INF/lib 文件夹。但它正在复制所有其他 JAR 文件。有什么问题?

【问题讨论】:

【参考方案1】:

尝试删除&lt;optional&gt;true&lt;/optional&gt;

【讨论】:

【参考方案2】:

Introduction to the Dependency Mechanism: Transitive Dependencies 告诉我们optional 如下:-

可选依赖项 - 如果项目 Y 依赖于项目 Z,项目 Y 的所有者可以使用 @987654324 将项目 Z 标记为 optional dependency @ 元素。

当项目 X 依赖于项目 Y 时,X 将仅依赖于 Y 而不依赖于 Y 的可选依赖 Z。然后,项目 X 的​​所有者可以根据自己的选择显式添加对 Z 的依赖项。 (将可选依赖项视为“默认排除”可能会有所帮助。

那么optional 依赖将不会包含在我们的WEB-INF/lib 中。

我希望这会有所帮助。

【讨论】:

是的,我已经删除了optional

以上是关于Maven 没有将一些 JAR 复制到 WEB-INF/lib的主要内容,如果未能解决你的问题,请参考以下文章

如何让maven 将工程依赖的jar 复制到WEB-INF/lib 目录下

使 Maven 将依赖项复制到 target/lib

让 Maven2 将资源复制到构建目录,但不将它们捆绑在 JAR 中

如何把maven中心仓库的包加载到本地仓库

如果使用 jar,则从 jar 中解压缩文件,然后将提取的文件复制到目录

如何让maven 将工程依赖的jar 复制到WEB-INF/lib 目录下