3.7.1 Configuración y dependencias - Reference Documentation
Authors: Graeme Rocher, Peter Ledbrook, Marc Palmer, Jeff Brown, Luke Daley, Burt Beckwith
Version: null
3.7.1 Configuración y dependencias
Grails features five dependency resolution configurations (or 'scopes'):
Grails ofrece cinco configuraciones de resolución de dependencia (o 'ámbitos'):
-
build: Dependencies for the build system only -
compile: Dependencies for the compile step -
runtime: Dependencies needed at runtime but not for compilation (see above) -
test: Dependencies needed for testing but not at runtime (see above) -
provided: Dependencies needed at development time, but not during WAR deployment
dependencies block you can specify a dependency that falls into one of these configurations by calling the equivalent method. For example if your application requires the MySQL driver to function at runtime you can specify that like this:build: dependencias sólo para el sistema de compilación.compile: dependencias para el tiempo de compilación.runtime: dependencias necesarias en tiempo de ejecución, pero no para la compilación (véase más arriba).test: dependencias necesarias para las pruebas, pero no en tiempo de ejecución (véase más arriba).provided: dependencias necesarias en el tiempo de desarrollo, pero no durante el despliegue de WAR.
dependencies puede especificar una dependencia que corresponde con una de estas configuraciones llamando al método equivalente. Por ejemplo, si su aplicación requiere el controlador MySQL funcione en tiempo de ejecución(runtime) puede especificaro así:runtime 'com.mysql:mysql-connector-java:5.1.16'
This uses the string syntax:
Esto utiliza la sintaxis de cadena: group:name:version. You can also use a Map-based syntax:group:name:version. También puede utilizar una sintaxis basada en mapas:runtime group: 'com.mysql',
name: 'mysql-connector-java',
version: '5.1.16'In Maven terminology,
En la terminología de Maven, group corresponds to an artifact's groupId and name corresponds to its artifactId.Multiple dependencies can be specified by passing multiple arguments:group corresponde al groupId de un artefacto y name corresponde a su artifactId.Varias dependencias pueden especificarse pasando varios argumentos:runtime 'com.mysql:mysql-connector-java:5.1.16',
'net.sf.ehcache:ehcache:1.6.1'// oruntime(
[group:'com.mysql', name:'mysql-connector-java', version:'5.1.16'],
[group:'net.sf.ehcache', name:'ehcache', version:'1.6.1']
)Disabling transitive dependency resolution
By default, Grails will not only get the JARs and plugins that you declare, but it will also get their transitive dependencies. This is usually what you want, but there are occasions where you want a dependency without all its baggage. In such cases, you can disable transitive dependency resolution on a case-by-case basis:Deshabilitar la resolución de dependencias transitiva
De forma predeterminada, Grails no sólo obtendrá los jars y plugins que se declaran, sino también sus dependencias transitivas. Esto suele ser lo que se desea, pero hay ocasiones donde desea una dependencia sin todo su equipaje. En tales casos, puede deshabilitar la resolución de dependencia transitivas:runtime('com.mysql:mysql-connector-java:5.1.16',
'net.sf.ehcache:ehcache:1.6.1') {
transitive = false
}// o
runtime group:'com.mysql',
name:'mysql-connector-java',
version:'5.1.16',
transitive:falseExcluding specific transitive dependencies
A far more common scenario is where you want the transitive dependencies, but some of them cause issues with your own dependencies or are unnecessary. For example, many Apache projects have 'commons-logging' as a transitive dependency, but it shouldn't be included in a Grails project (we use SLF4J). That's where theexcludes option comes in:Excluyendo las dependencias transitivas específicas
Un escenario mucho más común es cuando desea las dependencias transitivas, pero algunos de ellos causan problemas con sus propias dependencias o son innecesarias. Por ejemplo, muchos proyectos de Apache tienen 'commons-logging' como una dependencia transitiva, pero no debería ser incluido en un proyecto Grails (utilizamos SLF4J). Ahí es donde la opciónexcludes interviene:runtime('com.mysql:mysql-connector-java:5.1.16',
'net.sf.ehcache:ehcache:1.6.1') {
excludes "xml-apis", "commons-logging"
}// o
runtime(group:'com.mysql', name:'mysql-connector-java', version:'5.1.16') {
excludes([ group: 'xml-apis', name: 'xml-apis'],
[ group: 'org.apache.httpcomponents' ],
[ name: 'commons-logging' ])As you can see, you can either exclude dependencies by their artifact ID (also known as a module name) or any combination of group and artifact IDs (if you use the Map notation). You may also come across
Como puede ver, puede excluir las dependencias por su ID de artefacto (también conocido como un nombre de módulo) o cualquier combinación de ID de grupo y artefacto (si se utiliza la notación del mapa). También puede utilizar exclude as well, but that can only accept a single string or Map:exclude, pero este sólo puede aceptar una sola cadena o mapa:runtime('com.mysql:mysql-connector-java:5.1.16',
'net.sf.ehcache:ehcache:1.6.1') {
exclude "xml-apis"
}Using Ivy module configurations
If you use Ivy module configurations and wish to depend on a specific configuration of a module, you can use thedependencyConfiguration method to specify the configuration to use.Utilizando las configuraciones de módulo de Ivy
Si utiliza las configuraciones de módulo de Ivy y desea depender de una configuración específica de un módulo, puede utilizar el métododependencyConfiguration para especificar la configuración a usar.provided("my.org:web-service:1.0") { dependencyConfiguration "api" }
If the dependency configuration is not explicitly set, the configuration named
Si no se establece explícitamente la configuración de la dependencia, la configuración denominada "default" will be used (which is also the correct value for dependencies coming from Maven style repositories).
"default" se utilizará (que es también el valor correcto para dependencias procedentes de repositorios de estilo Maven).

