识别文件夹的构建类型

时间:2019-07-02 04:43:16

标签: shell maven gradle

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

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

gradle clean build

OR

maven install

来自shell脚本中的with。

有没有一种确定的方法可以检测文件夹是否包含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

谢谢。

1 个答案:

答案 0 :(得分:1)

根据经验:

  1. Gradle项目将有一个build.gradle(并且经常是settings.gradle
  2. Maven项目将有一个pom.xml
  3. 蚂蚁项目将有一个build.xml

但是这些假设存在一些问题,包括

  1. 全部3个选项均允许您在命令行上指定构建文件名(因此,构建文件的名称可能与上面的名称不同)
  2. 我研究的项目同时具有pom.xml和build.gradle(项目可以在maven和gradle中构建,而从maven过渡到gradle)
  3. 我曾经从事过具有pom.xml和build.xml(maven称为ant)的Maven项目
  4. 许多构建需要传递额外的命令行参数(例如,配置文件和/或属性)
  5. 并非所有Gradle项目都具有“构建”任务
  6. 并非所有的蚂蚁构建都会有一个“构建”目标

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