问题标签 [maven-assembly-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
280 浏览

maven-2 - 在 Maven 项目中组装模块资源的正确方法是什么?

我有一个像这样的项目结构

module-distribution 依赖于 module-a,它们共享父 pom 并作为模块包含在该父 pom 中。

这个想法是有一个装配布局,如

其中 lib 目录包含所有项目工件,包括依赖项(即 module-a.jar 及其依赖项 jar),并且 module-a.jar 不应包含其样式目录。样式目录应该驻留在 my-final-assembly/styles 中。

我可以轻松填写​​ lib 目录,包括

在我的汇编文件中。但是 module-a/src/main/styles 呢?我可以

  1. 将其包含在 module-a 工件中(它将驻留在 module-a.jar 中)
  2. 不要将它包含在 module-a.jar 中。

当然,1)和2)都对我无效。在第一种情况下,我必须以某种方式从我的 module-a.jar 中提取样式目录。在第二种情况下,根本不会复制样式目录,因为仅复制工件,而不是整个目标文件夹。

我最后的手段是为样式目录内容创建一个单独的模块,并让 module-a 依赖它,但这对我来说似乎有点矫枉过正。尽管在这种情况下调整我的程序集文件以获得我想要的东西很容易。但是对于单个模块需要的一堆字体和 xmls 的单独模块?那将是可悲的,尽管如果这就是你所说的 Maven 方式,我已经准备好了。

0 投票
5 回答
21682 浏览

maven-2 - maven-assembly-plugin 不添加系统范围的依赖项

这是我的 pom 文件:

当我运行 jar 时,我得到:

这是jgraphx依赖的一部分。我错过了什么?

0 投票
6 回答
15738 浏览

maven-2 - 如何抑制 maven 程序集插件跳过已添加的文件?还是允许覆盖?

几个星期以来,我一直在与 maven 搏斗,让它“正确地”部署我们的项目。

我快完成了,但我有一个顽固的小问题:

当我使用具有“目录”目标的 maven 程序集插件时,如

mvn assembly:directory

我得到很多控制台输出,如下所示:

[INFO] tomcat/conf already added, skipping
 [INFO] tomcat/conf/Catalina already added, skipping
 [INFO] tomcat/conf/Catalina/localhost already added, skipping
 [INFO] tomcat/webapps already added, skipping

我编写了自己的程序集描述符,基本上将几个 FileSet 复制到部署目录中的各个子目录中。每当将来自一个 FileSet 的文件复制到另一个 FileSet 已经创建基本目录结构(以及一些可以覆盖的“默认”文件)的位置时,就会出现上述消息。

所以,我很难弄清楚:

我该如何 1)抑制这些消息(但只有“已经添加”的消息)或 2)允许覆盖?

0 投票
3 回答
17867 浏览

maven-2 - Maven Assembly Plugin - 安装创建的程序集

我有一个仅由文件组成的项目。我想将这些文件打包成一个 zip 并将它们存储在一个 Maven 存储库中。我已将程序集插件配置为构建 zip 文件,并且该部分工作正常,但我似乎无法弄清楚如何安装 zip 文件?

另外,如果我想在另一个工件中使用这个程序集,我该怎么做?我打算调用依赖项:解包,但我在存储库中没有要解包的工件。

如何将 zip 文件放在我的存储库中,以便我可以在另一个工件中重新使用它?

家长会

子 POM

我把名字过滤掉了。这个 POM 正确吗?我只想将特定虚拟主机的文件捆绑在一起。

谢谢,

沃尔特

0 投票
1 回答
532 浏览

maven-2 - Maven 程序集。将每个具有传递依赖项的依赖项放在自己的目录中?

我有一个由几个模块组成的 Maven 项目。这将部署在客户端计算机上,将涉及安装 Tomcat,并将使用 NSIS 进行安装程序。有一个单独的应用程序可以监控 tomcat 并可以重新启动它、执行更新等。

所以,我的模块设置如下:

所以,我需要创建一个安装程序。我正计划创建另一个模块,即安装程序。这是我拥有 tomcat 目录的地方,我希望 maven 能够“组装”所有内容,然后运行 ​​NSIS,这样我就可以创建最终的安装程序。

但是,我需要将监视器 jar 文件放在一个目录中,然后将所有监视器依赖项放在 lib/ 目录中。最终的目录结构应该是:

在 client-web\WEB-INF\lib 目录中,我们将在它被分解后拥有所有 client-web 的依赖项。那行得通,我有 .war 文件。我遇到的问题是让监视器模块依赖项独立于客户端 Web 模块的依赖项。

我试图只创建安装程序模块并制作监视器和客户端 Web 依赖项,但是当我使用依赖项复制时,它给了我一切。不是我想要的。

我倾向于创建一个名为 monitor-assembly 的新模块,或者给我一个包含我需要的目录格式的 zip 文件,但那是另一个模块。

有人可以帮我用正确的方法来完成这个吗?

谢谢!

0 投票
2 回答
6535 浏览

maven-2 - 如何让 jetty-maven-plugin 部署从存储库中检索到的战争?

我正在为一个大型 Web 项目设置一个集成测试模块。集成测试模块与 web 项目本身是分开的,它有自己的 pom.xml 文件。

这个想法是使用 maven-soapui-plugin 发送请求并验证响应。设置soapui-plugin 并不麻烦。但是,我无法弄清楚如何告诉 jetty-maven-plugin 从远程存储库部署战争。

如果我理解正确,jetty-maven-plugin 有一个名为 '<webApp>/<webApp>' 的属性,它可以让我指定要部署的 war 文件。问题是模块本身中不存在war文件。

我听说我可以使用 maven 程序集插件通过项目 artifactId 从存储库中检索战争,但我还没有弄清楚我将如何去做。

这是我想要的摘要:

  1. 从存储库等中检索特定的战争,例如通过其 artifactId。
  2. 将这场战争部署到 jetty-maven-plugin(目标部署战争?)
  3. 让 maven-soapui-plugin 运行测试并在集成测试阶段报告结果。

我很确定我已经完成了第 3 步,但我非常不确定如何实现第 1 步和第 2 步。

任何帮助是极大的赞赏

0 投票
2 回答
12083 浏览

maven-2 - Maven 程序集:包含具有不同分类器的依赖项

我想在 Maven 中构建两个不同版本的 WAR(我知道这是不行的,这就是当前情况下的方式)。在程序集描述的 WAR 版本中,我想用不同的分类器用相同的依赖项替换依赖项。例如,我希望这个程序集能够工作:

这不起作用,但我是否朝着正确的方向前进?我已经阅读了Maven 程序集页面上的所有页面以及Maven 权威指南中似乎相关的部分。任何指针都会有所帮助。

0 投票
3 回答
16024 浏览

maven - maven:多模块项目组装成单个jar

我有一个多模块项目,想创建一个包含我所有模块的类的单个 jar。在我的父 POM 中,我声明了以下插件:

但是,在运行 mvn assembly:assembly 时,仅包含来自父文件夹(空)的源。如何将模块中的源包含到存档中?

0 投票
5 回答
24548 浏览

java - 在 Maven 构建的 JAR 中找不到泽西消息正文阅读器

我的应用程序使用 REST (JAX-RS Jersey) 接口。当我在 Eclipse 中运行它时,一切都很好。域对象被注释,我没有使用 XML 文件进行 REST 映射。

现在我使用 maven-assembly-plugin 创建了一个独立的 JAR,它将应用程序和所有依赖项打包在一个可执行的 JAR 文件中。这似乎也有效。

但是当我启动应用程序并从服务器请求一个对象时,Jersey 抱怨说它找不到消息正文阅读器:

任何想法为什么会发生这种情况?

编辑:在我睡了一晚之后,我注意到它抱怨 JSON ......但我只使用 XML 进行序列化。奇怪的。

0 投票
1 回答
19581 浏览

maven-2 - maven 程序集插件没有使用 finalName 来安装 attach=true?

我已经配置了以下程序集:

这产生了两个 zip 文件:

  • 分发-prod.zip
  • 分发-test.zip

我对属性attach=true的期望是,这两个 zip 文件以属性finalName中给出的名称安装。但结果是,只有一个文件安装(附加)到工件。maven协议是:

  • distrib-0.1-SNAPSHOT.zip
  • distrib-0.1-SNAPSHOT.zip

该插件使用的是 artifact-id 而不是属性 finalName!这是一个错误吗?

最后一个安装覆盖第一个。我该怎么做才能安装这两个具有不同名称的文件?

感谢您的调查。罗兰