使用Maven程序集插件检测丢失的包含文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Maven程序集插件检测丢失的包含文件相关的知识,希望对你有一定的参考价值。

我使用Maven程序集插件使用以下描述符构建我的项目:

    <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
  <id>src</id>
  <formats>
    <format>tar.gz</format>
    <format>tar.bz2</format>
    <format>zip</format>
  </formats>
  <fileSets>
    <fileSet>
      <directory>${project.basedir}</directory>
      <includes>
        <include>README*</include>
        <include>LICENSE*</include>
        <include>NOTICE*</include>
        <include>pom.xml</include>
      </includes>
      <useDefaultExcludes>true</useDefaultExcludes>
    </fileSet>
    <fileSet>
      <directory>${project.basedir}/src</directory>
      <useDefaultExcludes>true</useDefaultExcludes>
    </fileSet>
  </fileSets>
</assembly>

现在,如果缺少一个include(假设我在示例中没有任何“README *”或“pom.xml”文件),我没有任何错误。

如果缺少包含的文件,是否有办法在构建期间获得错误或警告?

答案

为此,您需要有一个maven enforcer插件。

此规则检查指定的文件列表是否存在。

你需要这样的东西。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-enforcer-plugin</artifactId>
  <version>3.0.0-M2</version>
  <executions>
    <execution>
      <id>enforce-license</id>
      <goals>
        <goal>enforce</goal>
      </goals>
      <configuration>
        <rules>
          <requireFilesExist>
            <files>
              <file>${project.basedir}/README*</file>
              <file>${project.basedir}${project.basedir}/LICENSE*</file>
              <file>${project.basedir}${project.basedir}/NOTICE*</file>
             <file>${project.basedir}${project.basedir}/pom.xml</file>
            </files>
          </requireFilesExist>
        </rules>
       <fail>true</fail>
      </configuration>
    </execution>
  </executions>
</plugin>

另见:maven enforcerrequireFilesExist

以上是关于使用Maven程序集插件检测丢失的包含文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 maven 程序集插件覆盖资源文件

使用Maven程序集插件创建WAR文件

Jacoco和Tycho surefire的Eclipse RCP插件代码介绍

如何抑制 maven 程序集插件跳过已添加的文件?还是允许覆盖?

即使在其他平台上运行,也使用 Maven 程序集插件设置 Linux 文件权限?

将属性文件与 Maven 程序集合并