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

maven assembly, fail if file not found

构建 maven assembly,我留下了这样的东西:

<fileSets>
    <fileSet>

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

        <includes>

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

How can I enforce the existence of LICENSE.md?

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

我认为您使用了其他方法来确保文件存在(maven-ant 插件,maven enforcer). Strict filtering is not available for fileset. It is only available for dependencyset. See this 相关邮件链。

每当您想根据不同的约束使构建失败时,您应该查看 Maven Enforcer Plugin。这个插件允许配置被检查的规则,如果其中任何一个没有通过,就会导致构建失败。

有一个 built-in 规则来检查文件是否存在,称为 requireFilesExist:

This rule checks that the specified list of files exist.

因此,如果文件 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 在构建阶段运行,因此如果文件不存在,构建将很快失败。