shell - 识别文件夹的构建类型

标签 shell maven gradle

我在不同位置有一组文件夹。
为了自动化每日更新和构建的过程,我正在编写一个简单的shell脚本,该脚本在文件夹集上进行迭代,对于每个文件夹,它将检测文件夹是gradle构建类型还是maven构建类型或ANT构建类型。

根据文件夹的构建类型,它将调用

gradle clean build

要么
maven install

在shell脚本中使用。

有没有确定的方法可以检测文件夹是否包含gradle build或maven build语义?

像如果文件夹包含pom.xml,则它必须是Maven构建。

我确实知道可以选择除pom.xml之外的其他文件名。

这是我所拥有的
if [["$FOLDER_BUILD_TYPE" == "GRADLE"]]; then
    cd FOLDER_TO_RUN_BUILD_COMMAND
    echo -e "\t\t\t\t ${GREEN} Running 'gradle build' in $FOLDER_TO_RUN_BUILD_COMMAND  ${RESET}"
    gradle build | indent
elif [["$FOLDER_BUILD_TYPE" == "MAVEN"]]; then
    cd FOLDER_TO_RUN_BUILD_COMMAND
    echo -e "\t\t\t\t ${GREEN} Running 'mvn install' in $FOLDER_TO_RUN_BUILD_COMMAND  ${RESET}"
    mvn install | indent    
elif [["$FOLDER_BUILD_TYPE" == "ANT"]]; then
    cd FOLDER_TO_RUN_BUILD_COMMAND
    echo -e "\t\t\t\t ${GREEN} Running 'ant build' in $FOLDER_TO_RUN_BUILD_COMMAND  ${RESET}"
    ant build | indent
else
    echo -e "\t\t\t\t ${GREEN} Ignoring UNKNOWN build type in $FOLDER_TO_RUN_BUILD_COMMAND  ${RESET}"
fi

谢谢。

最佳答案

根据经验:

  • Gradle项目将有一个build.gradle(通常是settings.gradle)
  • Maven项目将具有一个pom.xml
  • Ant项目将具有一个build.xml

  • 但是这些假设存在一些问题,包括
  • 全部3个选项可让您在命令行上指定构建文件名(因此,构建文件的名称可能与上面的名称不同)
  • 我研究过同时具有pom.xml和build.gradle的项目(项目可以同时在maven和gradle中构建,而从maven过渡到gradle)
  • 我研究过具有pom.xml和build.xml的Maven项目(Maven调用ant)
  • 许多构建需要传递额外的命令行参数(例如,配置文件和/或属性)
  • 并非所有Gradle项目都具有“构建”任务
  • 并非所有的 Ant 构建都会有一个“构建”目标

  • 由于这些原因,CI服务器要求您指定build命令,而不是尝试自动找出它。例如Travis CI需要您add a .travis.yml to your repository

    关于shell - 识别文件夹的构建类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56845446/

    相关文章:

    linux - 从 cron 中的另一个脚本运行 sh 脚本

    bash - 在 "vagrant ssh"时自动 chdir 到 vagrant 目录

    linux - shell命令 "cat -"的效果

    java - apache flink 无法解析导入

    android - 如何使包含Build.gradle文件的项目

    ubuntu - Ubuntu 中的 .gradle 目录在哪里?

    linux - 有人能解释一下为什么 awk 的 sub()/gsub() 是这样工作的吗?

    java - maven 将特定的依赖 jar 复制到 .war 文件中的特定目录

    maven - Sonar 上的多模块 Maven 项目代码覆盖率问题

    java - Gradle : Could not find org. codehaus.groovy :groovy:1. 0.0