git - 如何检查我的 Maven 项目中的文件名是否包含某些字符(然后构建失败)?

标签 git maven aem

在 Mac/Windows/Linux 混合开发团队中,使用 Maven 和 Git。一些文件和文件夹包含 :(冒号),它在除 Windows 以外的任何地方都有效。具体来说,这是 Apache Sling/Adob​​e AEM 使用的 jcr:content 文件夹。

使用 Git 克隆项目时,由于无法创建这些文件/文件夹而失败。

是否可以检查所有文件中是否存在这些平台不允许使用的字符?我想让 Maven 构建失败,以便开发人员知道重命名该文件夹,以便它适用于所有平台。

我搜索过 Maven 插件,但找不到任何可以完成这项工作的东西。如果它可以作为 Git 钩子(Hook),那将是一个合适的选择,但我在这里也没有看到任何可行的东西。

最佳答案

为了在目录包含不需要的字符时使构建失败,您可以使用 Maven Enforcer Plugin , 和 write a custom rule将执行此检查,因为没有专门的规则。

也就是说,您还可以使用 evaluateBeanshell用于此目的的规则:此规则评估 Beanshell 代码,如果脚本返回 false,则构建失败。在这种情况下,规则使用 FileUtils.getDirectoryNames ,这是一种返回目录列表的方法,该目录递归地匹配包含/排除从基本目录开始的 Ant 样式模式。下面匹配src目录下的所有目录,名称中包含冒号:;该列表必须为空才能继续构建。

<plugin>
  <artifactId>maven-enforcer-plugin</artifactId>
  <version>1.4.1</version>
  <executions>
    <execution>
      <id>enforce-beanshell</id>
      <goals>
        <goal>enforce</goal>
      </goals>
      <configuration>
        <rules>
          <evaluateBeanshell>
            <condition>org.codehaus.plexus.util.FileUtils.getDirectoryNames(new File("src"), "**/*:*", null, false).isEmpty()</condition>
          </evaluateBeanshell>
        </rules>
      </configuration>
    </execution>
  </executions>
</plugin>

Plexus Utils is already a dependency of the plugin , 所以你不需要再次添加它,但最好还是这样做,以防将来的版本没有它。所有路径都相对于项目的基本目录,因此无需在文件中指定它以开始搜索。

另请注意,这只会检查 src 目录下的文件;如果您还想检查其他目录,您可以添加更多条件。此外,它在 validate 阶段运行,因此如果您想检查构建期间生成的文件夹,您需要使用另一个阶段。

关于git - 如何检查我的 Maven 项目中的文件名是否包含某些字符(然后构建失败)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42341897/

相关文章:

aem - AuthenticationHandler : sling always redirecting to gemotrix login page

git - 错误 : Cannot Spawn C:\Path To\TortoiseGit\Bin: No such file or directory

git - 确定 git repo 是否有未提取的脚本更改的最快方法?

java - 如何编写一个可以以JSON格式输出依赖项的maven插件?

java - 当我在jenkins中选择maven项目时,如何为git克隆指定特定目录?

search - 如何根据 AEM 中的属性类型进行搜索

git - 来自 Nginx 的 502 Bad Gateway for large GitLab fork

windows - Git SSH 无法连接到自定义端口

scala - 如何让 scala 编译器找到使用错误参数的案例类

java - 如何使 SlingHttpServletRequest.getParts() 在 JUnit Test 中返回正确的值?