Разрешение зависимостей Grails - PullRequest
3 голосов
/ 02 марта 2011

Я немного новичок в Grails. У меня есть приложение, которое отлично работает в Eclipse, но при развертывании в рабочей среде падает из-за отсутствующих зависимостей.

Когда я запускаю отчет о зависимостях, он показывает, что все зависимости автоматически присутствуют для «сборки», но отсутствуют для «времени выполнения».

Какой самый лучший способ перенести зависимости из во время выполнения, чтобы (я надеюсь) они были скопированы в мой файл войны?

Также я использую плагин дезинфицирующего средства. Это работает нормально при разработке, но имеет зависимости, отсутствующие в «среде выполнения», поэтому падает. Если я вручную добавлю, например, одну из зависимостей в BuildConfig.groovy ("org.owasp.antisamy: antisamy: 1.4.3"), то grails падает с этой ошибкой:

Нарушение ограничения загрузчика: загрузчик (экземпляр) ранее инициировал загрузку для другого типа с именем "org / xml / sax / SAXParseException"

Я предполагаю, что это проблема пути к классам, но я не уверен, почему это происходит только тогда, когда я вручную добавляю зависимость - конечно, она присутствует постоянно?

1 Ответ

2 голосов
/ 02 марта 2011

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

У многих jar-архивов в репозиториях Maven их зависимости неправильно определены в файле pom. Есть способ исправить это в BuildConfig.groovy, отключив транзитивность:

runtime('org.owasp.antisamy:antisamy:1.4.3') {
   transitive = false
}

Вместо 'transitive = false' вы также можете поэкспериментировать с исключением только определенных зависимостей, например, используя.

excludes "xml-apis", "xerces"

внутри закрытия 'runtime'.

...