Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 2 在Maven项目中组装模块资源的正确方法是什么?_Maven 2_Maven Assembly Plugin - Fatal编程技术网

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

Maven 2 在Maven项目中组装模块资源的正确方法是什么?,maven-2,maven-assembly-plugin,Maven 2,Maven Assembly Plugin,我有一个像这样的项目结构 module-a/src/main/java module-a/src/main/styles module-distribution/src/main/assembly 模块分布取决于模块a,它们都共享父pom,并作为模块包含在该父pom中 这个想法是要有一个装配布局,如 my-final-assembly/lib my-final-assembly/styles 其中lib目录包含所有项目工件,包括依赖项(即module-a.jar及其依赖项jar),modul

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

module-a/src/main/java
module-a/src/main/styles
module-distribution/src/main/assembly
模块分布取决于模块a,它们都共享父pom,并作为模块包含在该父pom中

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

my-final-assembly/lib
my-final-assembly/styles
其中lib目录包含所有项目工件,包括依赖项(即module-a.jar及其依赖项jar),module-a.jar不应包含其样式目录。样式目录应位于最终部件/样式中

我可以很容易地填写lib目录,包括

<dependencySet>
    <useProjectArtifact>false</useProjectArtifact>
    <outputDirectory>lib</outputDirectory>
</dependencySet>

假的
解放党
在我的程序集文件中。但是module-a/src/main/styles呢? 我能

  • 将其包含在module-a工件中(它将驻留在module-a.jar中)
  • 不包括在module-a.jar中
  • 当然,1)和2)对我都无效。在第一种情况下,我必须以某种方式从module-a.jar中提取样式目录。在第二种情况下,根本不会复制styles目录,因为它只复制工件,而不复制整个目标文件夹


    我有一个最后的办法,为styles目录内容创建一个单独的模块,并使module-a依赖于它,但这对我来说似乎是一个过火的举动。尽管在这种情况下,调整我的程序集文件以获得我想要的东西是很容易的。但是一个单独的模块需要一堆字体和XML吗?这将是悲哀的,尽管我已经准备好了,如果这就是你所说的Maven方式。

    不知何故,你必须在某个时刻将样式放入工件中,以便能够将它们拉入并包含在“最终组装”中。我可以想出三种方法:

    第一种方法是您所描述的:将样式放在一个单独的模块中,并让bot-module-a和模块分发依赖于它(实际上,我不太理解为什么module-a依赖于它,因为您没有使用它们/将它们包含在模块中-一个工件中,但这由您自行决定)

    第二种方法是保持当前结构,但为模块a创建一个中间组件。这个程序集将包含module-a.jar样式(或者可能只是样式)。然后,在模块分发中,您将拉动此程序集,将其解压缩,并创建“最终程序集”


    第三种方法与前一种方法类似,只是最终组装将直接从模块A创建(不清楚模块分发是否有模块A以外的其他依赖项;如果没有,则可以从模块A执行所有操作)

    不知何故,您必须在某个时刻将样式放入工件中,以便能够将它们拉入并包含在“最终组装”中。我可以想出三种方法:

    第一种方法是您所描述的:将样式放在一个单独的模块中,并让bot-module-a和模块分发依赖于它(实际上,我不太理解为什么module-a依赖于它,因为您没有使用它们/将它们包含在模块中-一个工件中,但这由您自行决定)

    第二种方法是保持当前结构,但为模块a创建一个中间组件。这个程序集将包含module-a.jar样式(或者可能只是样式)。然后,在模块分发中,您将拉动此程序集,将其解压缩,并创建“最终程序集”


    第三种方法与前一种方法类似,只是最终组装将直接从模块A创建(不清楚模块分发是否有模块A以外的其他依赖项;如果没有,则可以从模块A执行所有操作)

    谢谢你的提示,帕斯卡!该项目有很多依赖项,模块a不是唯一的依赖项,因此我选择了第二种方法。我用程序集id“with styles”打包module-a.zip:module-a-with-styles.zip/lib/module-a.jar,module-a-with-styles.zip/styles,然后在final-assembly.xml中进行一些调整后,我得到了我所期望的结果。顺便说一句,这是一种常见的做法,张贴我的工作解决方案的详细信息作为问题的答案,以便每个人都能看到它?此评论区不允许使用漂亮的formatting@zamza不客气。关于您的问题,您的实现可能有点具体,但如果您认为它可以被其他人重用,请不要犹豫。不管具体与否,都不会有什么伤害。谢谢你的提示,帕斯卡!该项目有很多依赖项,模块a不是唯一的依赖项,因此我选择了第二种方法。我用程序集id“with styles”打包module-a.zip:module-a-with-styles.zip/lib/module-a.jar,module-a-with-styles.zip/styles,然后在final-assembly.xml中进行一些调整后,我得到了我所期望的结果。顺便说一句,这是一种常见的做法,张贴我的工作解决方案的详细信息作为问题的答案,以便每个人都能看到它?此评论区不允许使用漂亮的formatting@zamza不客气。关于您的问题,您的实现可能有点具体,但如果您认为它可以被其他人重用,请不要犹豫。不管具体与否,都不会有伤害。