如何使用regexp区分maven和gradle与Travis日志

如何使用regexp区分maven和gradle与Travis日志,regex,maven,logging,gradle,Regex,Maven,Logging,Gradle,背景:我目前正在开发一个研究工具,该工具需要挖掘TravisAPI,以获取Github上数千个项目的构建信息。我想找到最好的方法来识别项目是否使用Maven或Gradle作为构建工具 我从Travis构建中检索日志并对其进行解析,现在我对maven使用以下模式: ^(-------------------------------------------------------|\[INFO\] Reactor Summary:)$ 这是给格拉德的: ^(:[\w-]+)?:test[\w-]*

背景:我目前正在开发一个研究工具,该工具需要挖掘TravisAPI,以获取Github上数千个项目的构建信息。我想找到最好的方法来识别项目是否使用Maven或Gradle作为构建工具

我从Travis构建中检索日志并对其进行解析,现在我对maven使用以下模式:

^(-------------------------------------------------------|\[INFO\] Reactor Summary:)$
这是给格拉德的:

^(:[\w-]+)?:test[\w-]*$
问题是我每天都会发现新的项目不符合这些regexp:那么你们有什么想法来改进它们,以发现最多的项目没有误报吗


编辑:我最感兴趣的是启动测试的项目,这就是为什么我开始使用那些regexp

这可能对您有用。。。从maven转到gradle的项目

也许你可以有一个正则表达式,上面写着

  • 如果“mvn”出现在“gradle”或“gradlew”之前的日志中,那么它是一个maven项目
  • 如果“gradle”或“gradlew”出现在“mvn”之前,则它是一个gradle项目

  • INFO
    test
    Reactor Summary
    是否已修复?首先,我必须明确指出,我最感兴趣的是启动测试的项目。坦白地说,根据经验,我基本上是向那些regexp升级的:我遇到的大多数maven日志都有[INFO]Reactor摘要行,除非您在安静模式下启动maven:那么在启动测试时,我可以捕捉到一些破折号。对于gradle来说,大多数项目都有一些测试任务,前缀是“test”。为什么要解析日志…为什么不参与项目?你能看看github项目根目录中的
    travis.yml
    吗?@khmarbaise解析项目意味着使用github API并消耗令牌和时间:我有大量项目,那么解析日志对我来说更有趣@LanceJava
    travis.yml
    文件通常包含对bash脚本的调用,该脚本将包含调用maven或gradle的指令。感谢您指出这一点,但问题是我检查的某些项目可能有“gradle”或“mvn”以他们的名义:所以在这些命令上使用regexp要困难得多……我想无论你做什么,这都是一个猜测。如果有一个
    build.gradle
    文件,并且没有
    pom.xml
    我认为可以安全地假设它是一个gradle构建(反之亦然)。好吧,但要检测到我必须使用GH API,或者克隆项目,我不想对成千上万的项目这样做。。。我同意这是一个猜测,我只是想优化它:)