2017-02-06 20 views
2

一個maven assembly的基礎上,我留下了這樣的事情:Maven的組裝,失敗,如果沒有找到文件

<fileSets> 
    <fileSet> 

     <directory>${project.basedir}</directory> 
     <outputDirectory>/</outputDirectory> 

     <includes> 

      <include>LICENSE.md</include> 
      ... 

我怎麼能強制執行的LICENSE.md存在?

在給定示例中,如果此文件不存在,則不會引發任何警告,理想情況下,我希望構建失敗。

回答

2

無論何時您想根據不同的約束條件來構建失敗,您應該查看Maven Enforcer Plugin。這個插件允許配置被檢查的規則,如果其中任何一個沒有通過,它會使構建失敗。

有一個內置的規則,以檢查是否存在一個文件,叫requireFilesExist

此規則檢查指定的文件列表中存在。

因此,爲了失敗,如果該文件LICENSE.md不存在的身材,你可以有:

<plugin> 
    <artifactId>maven-enforcer-plugin</artifactId> 
    <version>1.4.1</version> 
    <executions> 
    <execution> 
     <id>enforce-license</id> 
     <goals> 
     <goal>enforce</goal> 
     </goals> 
     <configuration> 
     <rules> 
      <requireFilesExist> 
      <files> 
       <file>${project.basedir}/LICENSE.md</file> 
      </files> 
      </requireFilesExist> 
     </rules> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

這在構建默認運行在validate階段,which is the first phase invoked,使如果文件不存在,構建將快速失敗。

+0

Huzzah!恰恰是我正在尋找的行爲。謝謝! –

0

我想你已經使用其他手段來確保文件存在(maven-ant插件,maven enforcer)。嚴格篩選不適用於文件集。它僅適用於依賴集。請參閱this相關郵件鏈。

相關問題