при создании файла .jar в моей игре libgdx ошибка выводится через gradle dist

#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 Стратегия просто проигнорирует дубликат.
Из документации:

Не допускайте дублирования, игнорируя последующие элементы, создаваемые по тому же пути.

Если во время операции предпринимается попытка создать дубликат файла/ записи, проигнорируйте этот элемент. При этом файл/запись, которая была впервые скопирована/создана, останется на месте.

Вы также можете использовать любую другую повторяющуюся стратегию из этого перечисления.