2011-10-26 86 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目錄中的彙編二進制文件中。

相關問題