Определить тип сборки папки - PullRequest
0 голосов
/ 02 июля 2019

У меня есть набор папок в разных местах.Чтобы автоматизировать процесс ежедневных обновлений и сборок, я пишу простой сценарий оболочки, который перебирает набор папок, и для каждой папки он определяет, является ли папка типом сборки gradle, или типом сборки maven, или типом сборки ANT.

В зависимости от типа сборки папки будет вызываться

gradle clean build

ИЛИ

maven install

из с помощью в сценарии оболочки.

Есть ливерный способ определить, содержит ли папка сборку gradle или сборку maven?

Скажи как;если папка содержит 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 Ответ

1 голос
/ 02 июля 2019

Как правило:

  1. В проектах Gradle будет build.gradle (и часто settings.gradle)
  2. В проектах Maven будет pom.xml
  3. Проекты Ant будут иметь build.xml

Но есть проблемы с этими предположениями, включая

  1. Все 3 позволяют вам указывать имя файла сборки в командной строке(поэтому файл сборки может иметь имя, отличное от указанного выше)
  2. Я работал над проектами, в которых есть как pom.xml, так и build.gradle (проект может быть собран как в maven, так и в gradle при переходе от maven к gradle)
  3. Я работал над проектами Maven, в которых есть pom.xml и build.xml (maven вызывает ant) ​​
  4. Для многих сборок требуются дополнительные аргументы командной строки (например, профили и / или свойства)
  5. Не во всех проектах Gradle есть задача "сборки"
  6. Не во всех сборках ant будет цель "сборки"

По этим причинам серверы CI требуют от васуказывать команду сборки, а не пытаться ее понятьавтоматическиНапример, Travis CI требует от вас добавить .travis.yml в ваш репозиторий

...