uso tutorial site proyecto pagina oficial official multiproyectos crear comandos basicos gradle groovy

tutorial - Gradle: obtener la ruta del directorio del proyecto raíz al comenzar con un archivo de compilación personalizado



spring gradle (3)

En el archivo build.gradle solo use projectDir para obtener la ruta absoluta del archivo build.gradle. Desde allí puedes navegar los archivos de tu proyecto. Lea esto para más información:

https://www.tutorialspoint.com/gradle/gradle_build_script.htm

La estructura de mi proyecto Gradle es la siguiente:

Project ├── app └── build.gradle ├── foo └── bar.txt · · · └── build.gradle

Normalmente, para obtener la ruta de acceso absoluta de la carpeta foo simplemente puedo new File(''foo'').getAbsolutePath() en el archivo root build.gradle .

Pero, lamentablemente, esto no funciona si ejecuta el script de gradle desde fuera del directorio del proyecto, por ejemplo, haciendo algo como esto:

$ trunk/gradlew -b trunk/build.gradle tasks

Con el comando anterior, gradle está buscando el directorio foo en el padre del Proyecto, porque comencé el script desde allí.

¿Hay alguna forma de obtener la ruta absoluta del Proyecto donde está el build.gradle, incluso si inicia su secuencia de comandos desde otro directorio? ¿O hay alguna otra manera de obtener una referencia de un directorio en la misma carpeta donde está el script?

He intentado también con getClass().protectionDomain.codeSource.location.path pero está devolviendo la ruta al directorio de caché de Gradle.


new File(''foo'') por definición (mira su JavaDoc) crea una ruta en relación con el directorio de trabajo actual, por lo que depende de dónde se llame la aplicación. Si desea una ruta relativa a la carpeta del proyecto, use project.file(''foo'') , o como project es el valor predeterminado para resolver el método solo file(''foo'') y obtiene la ruta relativa resuelta en el directorio del proyecto, no el directorio de trabajo. Así que usa file(''foo'').absolutePath y estarás bien.


userDir este problema asegurándome de que Java userDir se configuró en el directorio del proyecto (es decir, project.projectDir ) en la parte superior de mi archivo build.gradle , de la siguiente manera:

System.setProperty( "user.dir", project.projectDir.toString() ) println " project dir: "+ System.getProperty("user.dir");

Esto se puede verificar ejecutando un archivo de código (Groovy) separado como:

println "User Dir: ${System.getProperty( ''user.dir'' )}"

Puede generar los valores del proyecto Gradle antes y después de usar estas declaraciones.

println "Root project: ${project.rootProject}"; println " rootDir: ${project.rootDir}" println " projectDir: ${project.projectDir}"; println " project dir: ${System.getProperty("user.dir")}";

Si tiene subproyectos, projectDir no es lo mismo que rootDir .

Esto no ha solucionado mi problema real , pero ha asegurado que estoy abriendo el archivo correcto (en relación con la ubicación de build.gradle .