maven程序集,如果找不到文件则失败

时间:2017-02-06 04:31:23

标签: maven pom.xml maven-assembly-plugin

建立一个maven assembly,我留下了类似的东西:

<fileSets>
    <fileSet>

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

        <includes>

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

如何强制存在LICENSE.md

在给定的示例中,如果此文件不存在,则不会引发警告,理想情况下,我希望构建失败。

2 个答案:

答案 0 :(得分: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中运行,因此如果文件不存在,构建将快速失败。

答案 1 :(得分:0)

我认为您已经使用其他方法来确保文件存在(maven-ant插件,maven enforcer)。严格过滤不适用于文件集。它仅适用于依赖集。请参阅this相关邮件链。