#java #gradle #jar #libgdx
#java #gradle #jar #libgdx
Вопрос:
Запись LICENSE.txt является дубликатом, но стратегия обработки дубликатов не была установлена. Пожалуйста, обратитесь к https://docs.gradle.org/7.0.2/dsl/org.gradle.api.tasks.Copy.html#org.gradle.api.tasks .Копировать:Дублирует strategy для получения подробной информации.
task dist(type: Jar) {
manifest {
attributes 'Main-Class': project.mainClassName
}
dependsOn configurations.runtimeClasspath
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
with jar
}
Ответ №1:
Ошибка говорит о том, что существует как минимум два файла с именами LICENSE.txt , которые копируются в одно и то же место назначения, что невозможно, поскольку в каталоге не должно быть двух файлов с одинаковым именем.
Чтобы исправить это, вы могли бы удалить один из LICENSE.txt файлы в вашем проекте (возможно, объедините их вручную, прежде чем удалять один).
Или вы можете добавить duplicateStrategy, как указано в ссылке в сообщении об ошибке:
task dist(type: Jar) {
manifest {
attributes 'Main-Class': project.mainClassName
}
dependsOn configurations.runtimeClasspath
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
// exclude duplicate files
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
with jar
}
EXCLUDE
Стратегия просто проигнорирует дубликат.
Из документации:
Не допускайте дублирования, игнорируя последующие элементы, создаваемые по тому же пути.
Если во время операции предпринимается попытка создать дубликат файла/ записи, проигнорируйте этот элемент. При этом файл/запись, которая была впервые скопирована/создана, останется на месте.
Вы также можете использовать любую другую повторяющуюся стратегию из этого перечисления.