2011-10-26 44 views
30

在一个常见事件中,我需要在程序集中包含一个空目录。在我的情况下,它是日志/。如何在maven程序集中包含一个空目录?

我试过在装配描述符像不同的变化:

<fileSet> 
    <directory>${basedir}/target</directory> 
    <includes> 
    <include>doesntexist</include> 
    </includes> 
    <outputDirectory>/logs</outputDirectory> 
    <fileMode>0644</fileMode> 
</fileSet> 

和目录刚刚被修剪。

我试图排除为好,但仍然包含的东西很多:

<fileSet> 
    <directory>${basedir}/target</directory> 
    <excludes> 
    <exclude>*</exclude> 
    </excludes> 
    <outputDirectory>/logs</outputDirectory> 
    <fileMode>0644</fileMode> 
</fileSet> 

回答

19

礼貌,this SO answer和一些试验和错误,一个似乎为我工作,下面...

<fileSet> 
    <directory>src/main/assembly</directory> 
    <outputDirectory>/logs</outputDirectory> 
    <excludes> 
    <exclude>*</exclude> 
    </excludes> 
</fileSet> 

的关键似乎是,以确保<directory>标签指定有效/现有文件夹,里面没有任何子文件夹

+5

如果您的目录包含文件夹,您可以使用' **/*'排除所有文件夹(和所有文件)。 – Leukipp

+0

该解决方案对我无效。克里斯托弗的工作很好。 – BlackEye

40

这总是对我的作品:

<fileSets> 
    <fileSet> 
    <directory>.</directory> 
    <outputDirectory>logs</outputDirectory> 
    <excludes> 
     <exclude>*/**</exclude> 
    </excludes> 
    </fileSet> 
</fileSets> 
+0

感谢他的有用样本。另外,如果你的输入'目录'依赖于一个构建子目录,不要忘记在资源步转发空目录:cf.https://stackoverflow.com/questions/2605747/maven-how-to-include-空目录 – boly38

1
<fileSets> 
    <fileSet> 
     <directory>./EMPTY_DIRECTORY_NAME</directory> 
     <outputDirectory>/REQUIRED_DIRECTORY_NAME in Assembly </outputDirectory> 
     <excludes> 
      <exclude>*/**</exclude> 
     </excludes> 
    </fileSet> 
</fileSets> 

例如

<fileSets> 
    <fileSet> 
     <directory>./Logs</directory> 
     <outputDirectory>/Feed</outputDirectory> 
     <excludes> 
      <exclude>*/**</exclude> 
     </excludes> 
    </fileSet> 
</fileSets> 

在这种情况下,即使Logs目录中有一些内容,它也不会包含在Feed目录中的汇编二进制文件中。

相关问题