1

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

module-a/src/main/java
module-a/src/main/styles
module-distribution/src/main/assembly

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

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

my-final-assembly/lib
my-final-assembly/styles

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

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

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

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

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

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

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

4

1 回答 1

1

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

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

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

第三种方法与前一种方法类似,只是最终程序集将直接从模块-a 创建(不清楚模块分发是否具有除模块-a 之外的其他依赖项;如果没有,那么您可以这样做模块-a) 中的所有内容。

于 2010-03-26T07:13:09.290 回答