Gradle comandos ejecutar desde otro directorio

votos
0

Tengo una carpeta A y la carpeta B
de la carpeta B está teniendo código Gradle Quiero correr gradle cleany gradle buildcomando desde la carpeta A de la carpeta B
¿Cómo se hace esto?

Publicado el 19/12/2018 a las 14:21
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
0

Esto es más difícil de lo que parece. Dispite ajuste de valores diferentes para --project-dir, --gradle-user-hogar, --build-archivo No importa lo que hagas, cuando "println project.projectDir" de la secuencia de comandos que se build.gradle SIEMPRE informar al directorio en el que "build.gradle" vive.

Quería volver a organizar cosas en Gradle porque Gradle contamina su directorio raíz con un montón de basura! Tío Bob de "código limpio" (Robert C. Martin) probablemente se referiría a este comportamiento como "código de grosero".

Finalmente lo he descubierto después de buscar todo el día. Aquí está mi estructura del proyecto:

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

    }
}

Correr:

Hacer un " golpe git aquí " dentro de la " Gradle carpeta". A continuación, escriba:

./run.sh

Y pulsa enter


Mi salida: (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

Toda la basura generada por Gradle se pone en el " GENERADOS carpeta". Entonces mi .gitignore se asegura de no cometer cualquiera de esa basura.

Respondida el 23/05/2019 a las 05:26
fuente por usuario

votos
0

Debe utilizar el parámetro "iniciar directorio" ( -p, --project-dir : ver opciones de entorno )

Creo que el otro parámetro disponible -b --build-filepodría funcionar tan bien, pero su uso principal es cuando su nombre de fichero script de construcción difiere de forma predeterminada build.gradle.

Respondida el 19/12/2018 a las 18:48
fuente por usuario

votos
0

Utilice el -bparámetro (es decir --build-file)

cd A
gradle -b ../B/build.gradle 
Respondida el 19/12/2018 a las 14:45
fuente por usuario

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