136
Estoy tratando de construir un proyecto gradle pero, cuando intento $ gradle build
Obtengo el siguiente resultado:
Starting a Gradle Daemon (subsequent builds will be faster)
> Task :jar FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':jar'.
> Entry .classpath is a duplicate but no duplicate handling strategy has been set. Please refer to https://docs.gradle.org/7.0/dsl/org.gradle.api.file.CopySpec.html#org.gradle.api.file.CopySpec:duplicatesStrategy for details.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 11s
4 actionable tasks: 2 executed, 2 up-to-date
Después de hacer Get-ChildItem -Path ./ -Filter .classpath -Recurse -Force
Llegué a la conclusión de que ni siquiera tengo un solo archivo llamado .classpath
en mi proyecto ¿Qué debo hacer?
Similar a la respuesta de @korn, resolví la mía usando el EXCLUDE
Estrategia;
tasks.withType<Jar>() {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
manifest {
attributes["Main-Class"] = "MainKt"
}
configurations["compileClasspath"].forEach { file: File ->
from(zipTree(file.absoluteFile))
}
}
-
como pueden ser los conflictos
MERGED
?– oraciónagupa
14/09/2021 a las 22:44
-
Agregado
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
¡y funciona! ¡Magia!– Benone
27 de noviembre de 2022 a las 11:59
Marina Mikilchenko
jar {
duplicatesStrategy(DuplicatesStrategy.EXCLUDE)
}
-
Para las personas que usan el complemento Spring Boot: reemplazar
jar
conbootJar
.– nuevo
15 de marzo a las 11:49
Morteza
por favor agrega esto
tasks.withType(Copy).all { duplicatesStrategy 'exclude' }
En el build.gradle
el archivo luego lo resolvió.
-
Por favor, evite comenzar una respuesta con Tengo el mismo problema porque corre el riesgo de que lo marquen como No es una respuesta. En su lugar, utilice un texto más afirmativo como Para resolver el problema debes …..
–Steve
20 de junio de 2022 a las 9:49
-
tareas.withType
no funciona para mí, esta copia sí – Mía
25 de noviembre de 2022 a las 9:13
Enfrenté el mismo problema mientras construía con kotlin y gradle 7. Resuelva el problema agregando el siguiente código a su build.gradle.kts
.
tasks.withType<Jar> { duplicatesStrategy = DuplicatesStrategy.INHERIT }
Si usa Kotlin DSL y Gradle 7.0, puede deberse a ese error KT-46165
Debería arreglarse en la versión 1.5.0.
wprogLK
Estaba teniendo los mismos problemas al ejecutar algunas pruebas en IntelliJ. Lo que me ayudó fue ejecutar un simple gradle clean
.
cirilo
No sé acerca de su caso con .classpath
archivo que ni siquiera puede encontrar (como sé, este archivo generalmente se crea con Eclipse IDE que no uso)
Pero me encontré con el mismo error al actualizar la aplicación Spring Boot a Gradle 7.x. Mi script de compilación tenía una tarea de procesamiento de recursos adicionales para admitir @..@
marcadores de posición de estilo (como La compilación Spring Boot Maven síporque por ahora admito ambos sistemas de compilación en el proyecto y necesito que se comporten de la misma manera):
processResources {
with copySpec {
from 'src/main/resources'
include 'my-app*.yml'
include 'my-app*.yaml'
include 'my-app*.properties'
project.properties.findAll().each {
prop ->
if (prop.value != null) {
filter(ReplaceTokens, tokens: [(prop.key): prop.value.toString()])
}
}
}
}
Recibí el mismo error con Gradle 7:
La entrada my-app.properties es un duplicado, pero no se ha establecido una estrategia de manejo de duplicados. Por favor refiérase a https://docs.gradle.org/7.1/dsl/org.gradle.api.tasks.Copy.html#org.gradle.api.tasks.Copy:duplicatesStrategy para detalles.
Y, de hecho, hay un duplicado. Gradle primero copia el archivo sin procesar a build/resources/main
y luego intenta ejecutar mi costumbre processResources
y copie los archivos nuevamente en el mismo lugar.
La solución fue agregar duplicatesStrategy = 'include'
a with copySpec {}
bloquear. Parece que anteriormente Gradle sobrescribió silenciosamente el duplicado, por lo que no hubo ningún problema.
Si está en Linux u OSX, intente:
find . -name .classpath -type f
en la carpeta raíz de tu proyecto– tim_yates
26 de abril de 2021 a las 10:57
Acabo de comprobar esto. no tengo ninguno
.classpath
en mi proyecto– 136
26 de abril de 2021 a las 11:19
También tenga en cuenta que si el error se trata de un
Entry classpath.index
en lugar de.classpath
(Google muestra esta pregunta como primera respuesta entonces), es un problema causado por intellij. ver: github.com/gradle/gradle/issues/17236. La “entrada” es en realidad un archivo que existe con el mismo nombre en diferentes carpetas, esto no queda muy claro en el mensaje de error.– Daniel Alder
10 de enero a las 10:06
@DanielAlder, gracias por tu comentario. Me ayudó mucho. Tuve exactamente este problema.
– Sr. BoFrost
12 de enero a las 8:19