Это сложнее, чем кажется.Несмотря на то, что вы устанавливаете разные значения для --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 делает все возможное, чтобы не допустить этого мусора.