Запустите команды gradle из другого каталога - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть папка "A" и папка "B"
Папка "B" имеет код gradle. Я хочу выполнить команду gradle clean и gradle build из папки "A" папки "B"
Как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 19 декабря 2018

Вы должны использовать параметр "start directory" (-p, --project-dir: см. Опции среды )

Я думаю, что другой доступный параметр -b --build-file может работать, но его основнойиспользуется, когда имя файла вашего сценария сборки отличается от значения по умолчанию build.gradle.

0 голосов
/ 23 мая 2019

Это сложнее, чем кажется.Несмотря на то, что вы устанавливаете разные значения для --project-dir, --gradle-user-home, --build-file. Независимо от того, что вы делаете, когда вы «println project.projectDir» из своего скрипта build.gradle, он ВСЕГДА сообщиткаталог, в котором живет "build.gradle".

Я хотел переставить вещи в gradle, потому что gradle загрязняет ваш корневой каталог большим количеством мусора!Дядя Боб из «Чистого кода» (Роберт С. Мартин), вероятно, назвал бы это поведение «грубым кодом».

Я, наконец, понял это после поиска в течение всего дня.Вот моя структура проекта:

<root_folder>
 |
 +--[ .git       ]
 +--[ .gitignore ]
 |
 +--[-]src/main/java
 |   |
 |   +--Main.java
 |
 +--[-]RUN_ON_CMD
     |
     +--[-]Gradle
         +--[ build.gradle ]
         +--[ RUN.sh ]
         |
         +--[-]GENERATED

.gitignore:

GENERATED/

build.gradle:

apply plugin: 'java'                  
apply plugin: 'application'    

println "[project.projectDir]:"
println project.projectDir
mainClassName = 'Main'

sourceSets {
    main {
        java {
            //:Because "build.gradle" lives in:
            //:<root>\RUN_ON_CMD\Gradle\GENERATED\
            srcDir '../../../src/main/java'
        }
    }
}

RUN.sh

build_gradle=$( realpath build.gradle )
echo $build_gradle

current_directory=$( realpath "." )
echo $current_directory

generated=${current_directory}/"GENERATED"
echo $generated

cp $build_gradle $generated/"build.gradle"
gradle run -b $generated/"build.gradle" -g $generated --no-daemon

main.java

public class 
Main{
    public static void 
    main( 
        String[] args
    ){

        System.out.println("[MAIN]");

    }
}

Для запуска:

Выполните " git bash здесь " внутриПапка " Gradle ".Затем введите:

. / RUN.sh

и нажмите клавишу ВВОД


Мой вывод: (TDD_JAVA == root_folder)

JMIM@DESKTOP-JUDCNDL MINGW64 /c/DEV/REPO/GIT/TDD_JAVA/RUN_ON_CMD/Gradle (master)
$ ./RUN.sh
/c/DEV/REPO/GIT/TDD_JAVA/RUN_ON_CMD/Gradle/build.gradle
/c/DEV/REPO/GIT/TDD_JAVA
/c/DEV/REPO/GIT/TDD_JAVA/RUN_ON_CMD/Gradle
/c/DEV/REPO/GIT/TDD_JAVA/RUN_ON_CMD/Gradle/GENERATED
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/5.4.1/userguide/gradle_daemon.html.
Daemon will be stopped at the end of the build stopping after processing

> Configure project :
[project.projectDir]:
C:\DEV\REPO\GIT\TDD_JAVA\RUN_ON_CMD\Gradle\GENERATED

> Task :run
[MAIN]

BUILD SUCCESSFUL in 8s
2 actionable tasks: 1 executed, 1 up-to-date

Весь мусор, генерируемый gradle, помещается в папку " GENERATED ".Тогда мой .gitignore делает все возможное, чтобы не допустить этого мусора.

0 голосов
/ 19 декабря 2018

Используйте параметр -b (т.е. --build-file)

cd A
gradle -b ../B/build.gradle 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...