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