Cuando ejecuto groovyc en un entorno de Windows, me estoy encontrando con problemas debido a la longitud del classpath, en mi situación. Me gustaría solucionar este problema creando un contenedor y luego poner ese jar en el cp. ¿Cómo puedo crear un contenedor de rutas w/todas las entradas classpath especificadas automáticamente en gradle y luego agregar ese jar al cp?¿Cómo puedo crear un contenedor de rutas en Gradle?
Respuesta
Finalmente, conseguí que la idea del "recipiente de la ruta" funcionara. Considero que esto es una solución permanente. Esto podría considerarse una solución si se hace parte de Gradle.
Peter proporcionó el código del jar original, pero no funcionó. El problema: los elementos classpath a los que se hace referencia en el contenedor de rutas deben ser relativos a la ubicación del contenedor de rutas. Entonces, esto parece funcionar para mí.
task pathingJar(type: Jar , dependsOn: 'cleanPathingJar') {
/**
* If the gradle_user_home env var has been set to
* C:\ on a Win7 machine, we may not have permission to write the jar to
* this directory, so we will write it to the caches subdir instead.
* This assumes a caches subdir containing the jars
* will always exist.
*/
gradleUserHome = new File(gradle.getGradleUserHomeDir(), "caches")
relativeClasspathEntries = configurations.compile.files.collect {
new File(gradleUserHome.getAbsolutePath()).toURI().
relativize(new File(it.getAbsolutePath()).toURI()).getPath()
}
appendix = "pathing"
destinationDir = gradleUserHome
doFirst {
manifest {
attributes "Class-Path": relativeClasspathEntries.join(" ")
}
}
}
compileGroovy {
dependsOn(pathingJar)
classpath = files(pathingJar.archivePath)
}
Aquí es una solución probada:
task pathingJar(type: Jar) {
appendix = "pathing"
doFirst {
manifest {
attributes "Class-Path": configurations.compile.files.join(" ")
}
}
}
compileGroovy {
dependsOn(pathingJar)
classpath = files(pathingJar.archivePath)
}
Dependiendo de sus requisitos exactos, es posible que tenga que ajustar esto un poco. Por ejemplo, si tiene pruebas escritas en Groovy, también necesitará un Jar de ruta para la ruta de la clase de compilación de prueba. En este caso, deberá repetir la configuración anterior de la siguiente manera:
task testPathingJar(type: Jar) {
appendix = "testPathing"
doFirst {
manifest {
attributes "Class-Path": configurations.testCompile.files.join(" ")
}
}
}
compileTestGroovy {
dependsOn(testPathingJar)
classpath = files(testPathingJar.archivePath)
}
Whoa, una respuesta del propio Peter Niederwieser! ¡Gracias! Probaré esto pronto, con suerte. Por cierto, Spock es espectacular. –
Pregunta de seguimiento: parece que no funciona como se esperaba. Se crea el contenedor de rutas, pero cuando agrego el contenedor de rutas al classpath al compilar, por alguna razón, la compilación falla y se queja de los archivos jar faltantes que ya están referenciados en el contenedor de rutas ... –
Estoy pensando que esto no funciona, ya que esto especifica las rutas absolutas de las jarras en el manifiesto. No está claro que las rutas absolutas sean válidas en este caso. –
- 1. Crear un JAR ejecutable Groovy con Gradle
- 2. Jsf Cómo crear un contenedor de nombres
- 3. C++ Cómo crear un contenedor heterogéneo
- 4. No es capaz de crear un archivo Zip en Gradle
- 5. ¿Cómo puedo importar un script de Gradle a otro?
- 6. ¿Cómo crear un contenedor con bibliotecas externas incluidas en Eclipse?
- 7. ¿Cómo puedo establecer un nivel de registro diferente para un complemento de Gradle personalizado?
- 8. Uso de Gradle para crear un jar con dependencias
- 9. Cómo crear un contenedor de elementos no procesables
- 10. ¿Cómo puedo usar rutas completas en git?
- 11. Cómo crear un contenedor para una llamada asincrónica?
- 12. ¿Cómo ejecuto un contenedor desde el interior de un contenedor?
- 13. ¿Cómo puedo encontrar los paquetes definidos en un contenedor?
- 14. Crear un contenedor para una biblioteca C en Python
- 15. Crear un contenedor de tareas alrededor de un objeto existente
- 16. ¿Cómo puedo colocar una imagen girada dentro de un contenedor?
- 17. ¿Cómo puedo crear un ramdisk en Python?
- 18. Cómo puedo crear un guid en MFC
- 19. ¿Cómo puedo usar un contenedor externo en un proyecto de Android en NetBeans?
- 20. Cómo puedo usar la tarea CreateStartScripts de Gradle
- 21. Cómo interpretar Gradle DSL
- 22. ¿Cómo puedo recorrer todas las rutas?
- 23. de rutas de clases para los plugins de hormigas cuando se utiliza ANTBuilder de Gradle
- 24. Crear directorios automáticamente desde rutas largas
- 25. Distribución de un contenedor
- 26. ¿Cómo puedo anular una clase usando un contenedor separado?
- 27. Rieles: ¿Cómo puedo deshabilitar algunas rutas predeterminadas?
- 28. Forma eficiente de crear rutas recursivas Python
- 29. ¿Cómo puedo añadir un div contenedor alrededor ul wordpress Wordpress
- 30. Cómo usar la salida exec() en gradle
¿Pero esto no parece contener actualmente el archivo jar del proyecto en el classpath? –
Esto [no funcionó en las versiones de Groovy entre 3.0.5 en 3.0.8] (https://github.com/grails/grails-core/issues/9300). El problema de Grails vinculado también incluye una solución completa, utilizando este enfoque. –