【问题标题】:Include Maven dependencies in the assembly war?在装配战中包含 Maven 依赖项?
【发布时间】:2009-10-14 11:12:47
【问题描述】:

我正在使用packaging=war 创建一个程序集。 我需要包含一些 jar,它们已在我的 war (web-inf/lib) 中的 pom.xml 中声明为项目依赖项

我该怎么做?

编辑于 15/10- 我的项目创建了几个程序集,其中一个应该提供类型战争的包装。 一些 jar 文件,它们是项目的依赖项(并且已在 pom.xml 中声明)需要包含在 WEB-INF 下的 war 中。 我怎样才能包含它们,或者我怎样才能指出它们到我的本地 nexus 存储库路径的路径?

【问题讨论】:

  • 您使用 Maven 的“经典”打包插件创建您的战争文件,还是使用程序集插件创建它?在后一种情况下,您有一个 assembly.xml 文件。

标签: maven-2


【解决方案1】:

你能更精确一点吗?默认情况下,当您在war 项目上运行mvn clean install 命令时,Maven 2 将包含WEB-INF/lib 目录中的所有依赖项,不包括范围为testprovided 的依赖项。


如果您使用assembly 创建您的war 文件,那么您就有一个assembly.xml 文件,它定义了您的最终war 文件的内容。在此文件中,您可以指定要包含的依赖项列表:

<assembly>
    ...
    <dependencySets>
        <dependencySet>
           <includes>
               <include>log4j:log4j</include>
               <include>commons-lang:commons-lang</include>
               ...
           </includes>
           <unpack>false</unpack>
           <outputDirectory>WEB-INF/lib</outputDirectory>
        </dependencySet>
    </dependencySets>
</assembly>

(在此示例中,我要求添加 log4jcommons-lang 依赖项)。 对于每个依赖项,您需要指定 groupId 和 artifactId。系统会根据您在 pom.xml 文件中设置的依赖项列表自动检测版本。

【讨论】:

  • @romaintaz,战争中包含的范围是运行时和编译。测试和提供不包括在内
  • 是的,我犯了一个小错误。由于范围“编译”是默认范围,如果 Maven2 确实将它们直接包含在战争中会更好;)
  • 我已经编辑了我的答案,以考虑您确实在使用程序集插件来构建您的战争文件的情况。
猜你喜欢
  • 2012-08-08
  • 1970-01-01
  • 2023-03-30
  • 2013-10-04
  • 2010-12-16
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多