Prowadzone Gradle polecenia z innego katalogu

głosy
0

Mam folderu A i B folderu
Folder B mający Gradle kod Chcę uruchomić gradle cleani gradle buildpolecenia z folderu A z folderu B
Jak to zrobić?

Utwórz 19/12/2018 o 14:21
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
0

Jest to trudniejsze niż się wydaje. Dispite ustawiając różne wartości dla --project-dir, --gradle-user-home --build akt Bez względu na to, co robisz, gdy jesteś „println project.projectDir” ze skryptu build.gradle zawsze będzie sprawozdanie z powrotem katalog, w którym „build.gradle” żyje.

Chciałem ponownie zorganizować rzeczy w Gradle Gradle bo zanieczyszcza katalogu głównym z dużą ilością śmieci! Wujek Bob od „czystego kodu” (Robert C. Martin) prawdopodobnie odnosi się do tego zachowania jako „rude kodu”.

I w końcu zorientowaliśmy się po wyszukaniu cały dzień. Tu jest mój struktury projektu:

<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]");

    }
}

Biegać:

Zrobić „ git bash tutaj ” wewnątrz „ Gradle folderu”. Następnie wpisz:

./RUN.sh

I naciśnij Enter


Moje wyjście (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

Wszystko śmieci generowane przez Gradle umieszczana jest w „ GENEROWANYMI ” folder. Wtedy mój .gitignore pilnuje, aby nie popełnić żadnej z tych śmieci.

Odpowiedział 23/05/2019 o 05:26
źródło użytkownik

głosy
0

Należy użyć parametru „start katalog” ( -p, --project-dir patrz: opcje środowiskowe )

Myślę, że inne dostępne parametr -b --build-filemoże działać jak dobrze, ale jej głównym wykorzystywany jest gdy budować scenariusz różni się od nazwy pliku domyślnie build.gradle.

Odpowiedział 19/12/2018 o 18:48
źródło użytkownik

głosy
0

Użyj -bparametru (tj --build-file)

cd A
gradle -b ../B/build.gradle 
Odpowiedział 19/12/2018 o 14:45
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more