create - gradle version variable
¿Cómo defino una variable para la versión de dependencia en Gradle? (3)
A continuación la configuración en el archivo build.gradle
funcionó para mí con la gradle version 4.5
, publicándola aquí para futuras referencias.
ext {
springVersion = ''5.0.3.RELEASE''
}
dependencies {
compile "org.springframework:spring-context:$springVersion"
}
Actualmente estoy tratando de migrar un proyecto de Maven
a Gradle
En mi versión de Maven
tengo todas las versiones de dependencia listadas así en mi padre pom:
<properties>
<spring.version>4.2.3.RELEASE</spring.version>
<spring.boot.version>1.3.3.RELEASE</spring.boot.version>
...
</properties>
Y luego puedo definir una dependencia como esta en cualquiera de mis submódulos:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
Estoy intentando hacer lo mismo en Gradle
, porque algunos de mis módulos comparten versiones de dependencia como esta, y no me gustaría modificar más de un lugar si quiero actualizar Spring o hacer una operación similar.
Lo más cerca que he llegado a esto es esto:
dependencies {
ext.springVersion = ''4.2.3.RELEASE''
compile "org.springframework:spring-jdbc:$springVersion"
}
Sin embargo, eso todavía no funciona. ¿Cuál es la forma recomendada para lograr esto en Gradle? ¿O Gradle trata esto de manera diferente? Tal vez mi mente todavía esté demasiado concentrada en Maven para ver otra solución.
Por favor, tenga en cuenta que ese intento en Gradle no es exactamente lo que quiero todavía. Me gustaría poder definir las dependencias en un archivo separado , no directamente en el archivo que lo usará.
La forma en que ha proporcionado la versión de dependencia es correcta y debería funcionar. IntelliJ Idea tiene algunos problemas con las variables dentro de los scripts de compilación de gradle, por lo que no tiene que confiar en ello, solo intente ejecutar su compilación y verificación, si se descarga la dependencia y su proyecto se compila correctamente.
Si desea almacenar sus dependencias de proyecto en un archivo separado, entonces el enfoque más común es definirlas en la raíz build.script, mediante el cierre de subprojects
para todos los subproyectos o mediante todos los proyectos, si desea especificar la dependencia para todos sus proyectos, incluya el raíz. Esto se verá así:
subprojects{
dependencies{
compile ...
}
}
De esta manera, puede proporcionar cualquier configuración común para subproyectos dentro del script de construcción raíz. Lea sobre esto la guía del usuario
O puede declarar una variable en el script de construcción raíz, inicializarla como un mapa con todas las especificaciones de dependencia que necesita o como una matriz con la lista de dependencias individuales y usar esta variable dentro de sus subproyectos, si los necesita. Algo así en la raíz:
ext.commomLibs = [
''testlibs'' : ''junit:junit:4.8''
]
Tenga en cuenta que puede definir un valor del mapa como una matriz de la especificación lib para que apunte a todas estas dependencias. Y luego puedes usarlo en tus subproyectos como:
dependencies{
testCompile commomLibs.testlibs
}
Una alternativa más es usar un script de compilación separado con dependencias y aplicarlo al script de buils que necesita, como así
apply from: ''dependencies.script''
Luego puede colocar sus dependencias en el script de dependencias y simplemente aplicarlas en cualquier otro script de compilación, donde necesite estas dependencias y / o puede haber alguna lógica común.
Usa las cotizaciones dobles que funcionó para mí.
buildscript {
ext {
springBootVersion = ''2.0.4.RELEASE''
hazelCastVersion = ''3.10.4''
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
dependencies {
compile(''org.springframework.cloud:spring-cloud-starter-config'')
compile "com.hazelcast:hazelcast-spring:${hazelCastVersion}"
compile group: ''com.hazelcast'', name: ''hazelcast'', version: "${hazelCastVersion}" }