当前位置: 首页 > 知识库问答 >
问题:

如何在maven程序集中包含依赖项文件

艾宏远
2023-03-14

我有一个maven项目,它被配置为(通过使用pom.xml和assembly.xml)在运行MVN clean package Assembly:Single时打包一个zip文件,该文件包含编译后的webapp(war文件)和src/main/文件夹下的所有文件。

这个项目导入/使用另一个maven项目(它变成了一个jar文件),而该项目反过来也导入/使用第三个maven项目(同样是一个jar文件)。

第三个项目还包含src/main/文件夹中的一些文件,我希望在构建主项目时将这些文件与zip文件中的其他文件放在一起(链顶部的那个成为war文件)。

是否可以告诉maven将所有文件包含在特定文件夹中的所有依赖项(或一个特定依赖项)以及zip文件中?

共有1个答案

包建义
2023-03-14

从这里开始:Maven:完整的参考-8.5。控制程序集的内容

请注意,如果使用assembly:assembly部署一个Maven项目(您应该将其配置为 插件,而不是在命令行中使用),程序集将“附加”到项目并安装在存储库中。然后,您可以使用Maven依赖关系表示法访问它们,即mygroup:myartifact:extrafiles:zip

我发现程序集描述符 配置起来很麻烦。它们确实适用于简单情况(包括应用程序在运行时需要的JAR文件)。

以下是我为您期望的结果所采取的一般方法:

>

  • 使用Maven Dependency插件Dependency:Copy从其他项目下载特定文件,并将它们放在target/的子目录下

    配置程序集描述符以将那些下载/解压缩的文件添加到最终的程序集工件中。

    或者,使用Maven Ant Run插件一起破解一些东西。

  •  类似资料:
    • 我创建了一个带有pom文件的webapp java项目。然后我键入“mvn eclipse: eclipse”并将其导入eclipse。 (顺便说一句,您通常如何将java项目直接导入eclipse?我总是发现eclipse:eclipse工作得很好,只是我必须额外执行以下步骤才能键入eclipse:eclipse) 然后在eclipse中,我编辑并编译了项目,一切正常。但是,当我在eclipse

    • 问题内容: 我在Eclipse中有一个对我的工作区中的另一个Java项目有依赖性的对象。在内置的Tomcat服务器中运行Web项目时,我已将项目依赖项添加到 运行配置中 的类路径中。我想创建一个WAR,用于在外部服务器上部署Web项目。依赖性Java项目已添加到Eclipse中的 Java Build路径 ,但是当我导出WAR文件时,该库不包括在内。还可以在 Order and Export中 选

    • 问题内容: 有没有一种方法可以强制maven(2.0.9)将所有依赖项包含在单个jar文件中? 我有一个构建到单个jar文件中的项目。我希望将依赖项中的类也复制到jar中。 更新:我知道我不能只在jar文件中包含jar文件。我正在寻找一种方法来解压缩指定为依赖项的jar,并将类文件打包到我的jar中。 问题答案: 你可以使用带有描述符的插件来执行此操作。这是我们之一的相关块,它可以完成此任务:

    • 我在中与有依赖关系。在这个依赖项中,我有一组依赖项。 现在我需要将这些JAR中的一些添加到assembly中(包括它们以使用DependencySet->includes构建)。 如果我设置了组和POM依赖项的工件,那么在我的构建中得到的结果是POM.xml。 如果我设置到`“include”组和来自外部pom的依赖项工件,我会得到一个构建错误: 程序集配置不正确:一个或多个筛选器的条件不匹配。

    • 问题内容: 我想使用maven shade创建一个有阴影的jar,但我也想仅在有阴影的jar的情况下才包含一个特殊的依赖项(而不是在我项目的普通编译依赖项中)。我该怎么办? 根据我的理解,包含/排除项只是白名单/黑名单,因此我无法明确强制要包含的内容未包含在实际依赖项列表中。 对于更多上下文,我有一个JAR依赖项,其中包含只希望包含在我的一个阴影工件中的资源,但是如果在类路径中使用该jar会导致错

    • 根据我的理解,包含/排除只是白名单/黑名单,所以我不能显式地强制包含一些没有包含在实际依赖列表中的内容。 为了获得更多的上下文,我有一个JAR依赖项,它包含一个资源,我只希望它包含在我的shade工件中,但是在类路径上使用该JAR会导致错误。 明确地说,我希望在一个调用中生成一个带有附加依赖项的阴影jar,以及一个没有附加依赖项的普通jar。