¿Cómo establecer el nombre/grupo/versión del proyecto, además de la compatibilidad {origen, destino} en el mismo archivo?

4 minutos de lectura

avatar de usuario
fge

Tengo la intención de generalizar el uso de gradle para mis proyectos y me gustaría reutilizar el mismo archivo de compilación en todas partes. Desafortunadamente, tengo problemas para tratar de definir las propiedades mencionadas en $subject en un solo archivo para facilitar la migración.

Esto es gradle 1.6.

Lo que he intentado, fallando en todos los intentos:

  • gradle.properties: no se puede modificar el nombre (solo lectura, tiene que usar un settings.gradle y anular el raíz ¡nombre del proyecto!); {source,target}Compatibility no tomado en cuenta;
  • settings.gradle: {source,target}Compatibility tampoco se tiene en cuenta!

Entonces, ¿cuál es el método correcto para lograr esto? Lo que he intentado hasta ahora en gradle.properties:

group = something
name = whatever  # cannot do!
version = whatever
sourceCompatibility = whatever # not taken into account!

Y en settings.gradle:

sourceCompatibility = "whatever";  # not taken into account!

EDITAR Bueno, el problema del “nombre” simplemente no se puede resolver; por lo demás, he usado otro archivo que aplico en el archivo de compilación. El manejo del “nombre” realmente no es correcto :/

EDITAR 2 Esto es ahora 2014 y gradle 1.12, y el problema aún no está resuelto …

  • FYI, la incapacidad de personalizar el nombre del proyecto en el archivo build.gradle es actualmente una solicitud de mejora: issues.gradle.org//browse/GRADLE-2412.

    –Ryan Nelson

    24 de junio de 2013 a las 15:41

avatar de usuario
Pedro Niederwieser

gradle.properties:

theGroup=some.group
theName=someName
theVersion=1.0
theSourceCompatibility=1.6

configuración.gradle:

rootProject.name = theName

construir.gradle:

apply plugin: "java"

group = theGroup
version = theVersion
sourceCompatibility = theSourceCompatibility

  • Entonces, ¿quieres reutilizar en todas las compilaciones? Tu puedes hacer apply from: "other.gradle" o apply from: "http://my.server.com/other.gradle". Tenga en cuenta que este último no está actualmente en caché. Para obtener el almacenamiento en caché, tendría que escribir un binario enchufar.

    –Peter Niederwieser

    23 de junio de 2013 a las 18:26

  • Sí, uso el apply from: solución; sin embargo, esto no resuelve el problema del nombre 🙁

    – fge

    23/06/2013 a las 18:30

  • Creo que en el último Gradle puedes aplicar un complemento en settings.gradle también. Sin embargo, parece un poco extraño usar un complemento para establecer el mismo nombre de proyecto en todas las compilaciones.

    –Peter Niederwieser

    23 de junio de 2013 a las 18:33

  • Tenga en cuenta que también es posible establecer todas estas propiedades desde un init.gradle en su casa de usuario (consulte la guía del usuario).

    –Peter Niederwieser

    23 de junio de 2013 a las 18:36

  • No tiene que definir variables en gradle.properties y usarlas en settings.gradle . Solo puede mencionar en settings.gradle rootProject.name = “someName”. Asegúrese de especificarlo entre comillas dobles en settings.gradle.

    – Gopinath Sr.

    12 de diciembre de 2013 a las 0:23


avatar de usuario
juego zg

Encontré la solución a un problema similar. Estoy usando Gradle 1.11 (desde abril de 2014). El nombre del proyecto se puede cambiar directamente en settings.gradle archivo de la siguiente manera:

  rootProject.name="YourNewName"

Esto se encarga de cargarlo en el repositorio (Artifactory con su complemento para mí) con el artefactoId correcto.

  • Esta solución es menos que ideal para construcciones de múltiples proyectos.

    – asandroq

    28/10/2015 a las 10:51

  • @asandroq, como solo puede tener un único archivo de configuración, tendrá que cambiar el nombre del submódulo desde allí. Es central, pero funciona.

    – Nicolás

    29 de noviembre de 2017 a las 23:34

Configuré el nombre base del artefacto para que sea independiente del nombre del proyecto de compilación, lo que me permite lograr lo que desea:

jar {
    baseName "core"
}

Con esta propiedad establecida, incluso si el nombre de mi proyecto es “foo”, cuando ejecuto gradle installel artefacto se publica con el nombre core en vez de foo.

  • No ayuda a todas las demás tareas que estarían usando el nombre del proyecto y puede crear confusión adicional sobre los nombres en conflicto…

    – Cuarzo

    28 de mayo de 2018 a las 17:58

avatar de usuario
Eero Aalton

Aparentemente esto sería posible en settings.gradle con algo como esto.

rootProject.name="someName"
gradle.rootProject {
    it.sourceCompatibility = '1.7'
}

Recientemente recibí un aviso de que se puede establecer una propiedad de proyecto mediante un cierre que se llamará más tarde cuando el Proyecto esté disponible.

use buildSrc con Gradle Kotlin DSL vea el ejemplo completo aquí: GitHub daggerok/spring-fu-jafu-example buildSrc/src/main/java/Globals.kt

¿Ha sido útil esta solución?