Maven程序集插件:包含模块中的配置文件

时间:2012-12-19 14:14:06

标签: maven maven-3 maven-assembly-plugin

这是我的项目结构:

myapp-parent
  moduleMain
      src/main/java   ---> main class (it loads a spring context)
      src/main/config ---> main config files
  module1
      src/main/java   ---> specific code of the module
      src/main/config ---> specific config files of the module

我正在使用汇编和appassembler maven插件进行分发。这是汇编描述符:

<assembly>
<id>archive</id>
<formats>
    <format>zip</format>
    <format>tar.gz</format>
</formats>

    <fileSets>
   <fileSet>
        <directory>${project.build.directory}/generated-resources/appassembler/jsw/myProject/bin</directory>
        <outputDirectory>bin</outputDirectory>
        <includes>
            <include>**</include>
        </includes>
        <useDefaultExcludes>true</useDefaultExcludes>
        <fileMode>0755</fileMode>
        <directoryMode>0755</directoryMode>
    </fileSet>

    <fileSet>
        <directory>src/main/config</directory>
        <outputDirectory>conf</outputDirectory>
    </fileSet>

    <fileSet>
        <directory>${project.build.directory}/generated-resources/appassembler/jsw/myProject/conf</directory>
        <outputDirectory>conf</outputDirectory>
    </fileSet>

    <fileSet>
        <directory>${project.build.directory}/generated-resources/appassembler/jsw/myProject/lib</directory>
        <outputDirectory>lib</outputDirectory>
    </fileSet>
 </fileSets> 
</assembly>

因此,我得到一个包含配置文件夹('conf')的分发包。 问题是该目录中的配置文件来自mainModule,我想从module1获取配置文件也在同一个位置。

myProject.tar.gz
    bin
    lib
    logs
    conf --> Here we have config files from modeuleMain & module1

任何想法???

2 个答案:

答案 0 :(得分:2)

您可能想要查看程序集描述符中的<moduleSet/>配置,尤其是<sources/>子部分:ModuleSet Source-Inclusion Example

注意:这样只会让您 PART 找到解决方案的方法!问题是程序集插件的moduleSets函数最初设计用于仅在当前项目的子模块上运行(创建程序集的子模块)。为了解决这个问题,我们在程序集插件2.2版本中或附近引入了一个新配置,名为 <useAllReactorProjects/> 。将此标志设置为true,可使当前版本中的所有模块都可用于程序集。

如果在moduleSet中启用此功能,则应该能够包含module1中的配置文件。

答案 1 :(得分:0)

您是否已探索过汇编插件的多模块支持?

http://maven.apache.org/plugins/maven-assembly-plugin/examples/multimodule/index.html