Exécuter des commandes Gradle d'un autre répertoire

voix
0

J'ai le dossier « A » et le dossier « B »
Dossier « B » est d' avoir le code gradle je veux exécuter gradle cleanet gradle buildcommande à partir du dossier « A » du dossier « B »
Comment puis-je cela?

Créé 19/12/2018 à 14:21
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
0

Cela est plus difficile qu'il n'y paraît. Dispite réglage des valeurs différentes pour --project-dir, --gradle-utilisateur à domicile, fichier --build Peu importe ce que vous faites, quand vous « println project.projectDir » de votre script build.gradle il sera toujours signaler le retour répertoire dans lequel « build.gradle » vit.

Je voulais ré-arranger les choses dans gradle parce que gradle pollue votre répertoire racine avec beaucoup d'ordure! Oncle Bob de « Clean Code » (Robert C. Martin) serait probablement référence à ce comportement comme « code grossier ».

J'ai finalement pensé à elle après avoir cherché toute la journée. Voici ma structure de projet:

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

    }
}

Courir:

Faites un « bash git ici » dans le « Gradle dossier ». Ensuite , tapez:

./run.sh

Et appuyez sur ENTRER


Ma sortie: (TDD_JAVA == dossier_racine)

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

Tous les déchets générés par gradle est mis dans le « GÉNÉRÉ dossier ». Ensuite , mon .gitignore veille à ne commettre aucun de cette ordure.

Créé 23/05/2019 à 05:26
source utilisateur

voix
0

Vous devez utiliser le paramètre « start répertoire » ( -p, --project-dir : voir Options d' environnement )

Je pense que l'autre paramètre disponible -b --build-filepourrait fonctionner aussi bien, mais son utilisation principale est lorsque votre build nom de fichier de script diffère de défaut build.gradle.

Créé 19/12/2018 à 18:48
source utilisateur

voix
0

Utiliser le -bparamètre ( par exemple --build-file)

cd A
gradle -b ../B/build.gradle 
Créé 19/12/2018 à 14:45
source utilisateur

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