ruta relativa propiedades modificar leer fichero cargar archivo java gradle groovy

java - relativa - ¿Cómo leer un archivo de propiedades y usar los valores en el proyecto de script de Gradle?



leer archivo properties java web (1)

Estoy trabajando en un script de Gradle en el que necesito leer el archivo local.properties y usar los valores en el archivo de propiedades en build.gradle . Lo estoy haciendo de la siguiente manera. Ejecuté el script a continuación y ahora está arrojando un error, pero tampoco hace nada como crear, eliminar y copiar el archivo. Intenté imprimir el valor de la variable y está mostrando el valor correcto.

¿Alguien me puede decir si esta es la forma correcta de hacer esto? Creo que la otra forma es definir todo en gradle.properties y usarlo en build.gradle . ¿Alguien me puede decir cómo puedo acceder a las propiedades en build.gradle desde build.properties ?

archivo build.gradle :

apply plugin: ''java'' //-- set the group for publishing group = ''com.true.test'' /** * Initializing GAVC settings */ def buildProperties = new Properties() file("version.properties").withInputStream { stream -> buildProperties.load(stream) } //if jenkins build, add the jenkins build version to the version. Else add snapshot version to the version. def env = System.getenv() if (env["BUILD_NUMBER"]) buildProperties.test+= ".${env["BUILD_NUMBER"]}" version = buildProperties.test println "${version}" //name is set in the settings.gradle file group = "com.true.test" version = buildProperties.test println "Building ${project.group}:${project.name}:${project.version}" Properties properties = new Properties() properties.load(project.file(''build.properties'').newDataInputStream()) def folderDir = properties.getProperty(''build.dir'') def configDir = properties.getProperty(''config.dir'') def baseDir = properties.getProperty(''base.dir'') def logDir = properties.getProperty(''log.dir'') def deployDir = properties.getProperty(''deploy.dir'') def testsDir = properties.getProperty(''tests.dir'') def packageDir = properties.getProperty(''package.dir'') def wrapperDir = properties.getProperty(''wrapper.dir'') sourceCompatibility = 1.7 compileJava.options.encoding = ''UTF-8'' repositories { maven { url "http://arti.oven.c:9000/release" } } task swipe(type: Delete) { println "Delete $projectDir/${folderDir}" delete "$projectDir/$folderDir" delete "$projectDir/$logDir" delete "$projectDir/$deployDir" delete "$projectDir/$packageDir" delete "$projectDir/$testsDir" mkdir("$projectDir/${folderDir}") mkdir("projectDir/${logDir}") mkdir("projectDir/${deployDir}") mkdir("projectDir/${packageDir}") mkdir("projectDir/${testsDir}") } task prepConfigs(type: Copy, overwrite:true, dependsOn: swipe) { println "The name of ${projectDir}/${folderDir} and ${projectDir}/${configDir}" from(''${projectDir}/${folderDir}'') into(''${projectDir}/$configDir}'') include(''*.xml'') }

archivo build.properties :

# ----------------------------------------------------------------- # General Settings # ----------------------------------------------------------------- application.name = Admin project.name = Hello Cool # ----------------------------------------------------------------- # ant build directories # ----------------------------------------------------------------- sandbox.dir = ${projectDir}/../.. reno.root.dir=${sandbox.dir}/Reno ant.dir = ${projectDir}/ant build.dir = ${ant.dir}/build log.dir = ${ant.dir}/logs config.dir = ${ant.dir}/configs deploy.dir = ${ant.dir}/deploy static.dir = ${ant.dir}/static package.dir = ${ant.dir}/package tests.dir = ${ant.dir}/tests tests.logs.dir = ${tests.dir}/logs external.dir = ${sandbox.dir}/FlexCommon/External external.lib.dir = ${external.dir}/libs


Si usa el archivo predeterminado gradle.properties , puede acceder a las propiedades directamente desde su archivo build.gradle :

gradle.properties :

applicationName=Admin projectName=Hello Cool

build.gradle :

task printProps << { println applicationName println projectName }

Si necesita acceder a un archivo personalizado, o acceder a las propiedades que incluyen . en ellos (como parece que debe hacer), puede hacer lo siguiente en su archivo build.gradle :

def props = new Properties() file("build.properties").withInputStream { props.load(it) } task printProps << { println props.getProperty("application.name") println props.getProperty("project.name") }

Eche un vistazo a esta sección de la documentación de Gradle para más información.

Editar

Si desea configurar dinámicamente algunas de estas propiedades (como se menciona en un comentario a continuación), puede crear un archivo properties.gradle (el nombre no es importante) y requerirlo en su script build.gradle .

properties.gradle :

ext { subPath = "some/sub/directory" fullPath = "$projectDir/$subPath" }

build.gradle

apply from: ''properties.gradle'' // prints the full expanded path println fullPath