Pergunta

Eu tive um problema entre dois plugins Grails diferentes (Drools 0.3 e WebTest) onde ambos parecem incluir alguns versão do xml-API- * e estes parecem não ser capaz de co-existir.

Qual é a melhor maneira de resolver este tipo de problemas?

Foi útil?

Solução

Excluindo uma das libs agressor é um caminho, mas vai ser uma dor cada vez que você check-out do código-fonte. Infelizmente eu não posso pensar de outra maneira devido à xml-apis não ser no plugin lib dir de WebTest, mas como parte da baixado instalar WebTest.

Normalmente um plugin lib jar não é adicionado ao classpath se ele já existe no diretório lib aplicativo para que você possa criar um jar fictício com o mesmo nome para parar uma das libs sendo adicionado.

De olhar para a fonte plug-in WebTest deve ser excluindo xml-apis do classpath de qualquer maneira (linha _Events.groovy 100) - você está usando a versão mais recente? Tem certeza de que não os Drools do plugin colidindo com xml-apis de Grails?

Há melhor resolução de dependências que vem em 1,2 que plugins pode ser capaz de usar para evitar esse tipo de problema no futuro.

Outras dicas

A melhor maneira de fazer isso é usando Grails resolução de dependências DSL. . Você pode excluir ofender dependências como este:

plugin("hibernate") {
compile( 'org.hibernate:hibernate-core:3.3.1.GA') {
    excludes 'ehcache', 'xml-apis', 'commons-logging'
}
compile 'org.hibernate:hibernate-annotations:3.4.0.GA',
        'org.hibernate:hibernate-commons-annotations:3.3.0.ga'
runtime 'javassist:javassist:3.4.GA'    
}

Isso funciona desde Grails 1.2. É provável que seus plug-ins são o mecanismo de resolução de dependência de outra forma interna pré-Grails-1.2, baseado em Ivy deve cuidar de confrontos Fory você. O DSL resolução de dependência não é mais do que a maneira groovy de escrever o xml Ivy.

Eu não tenho certeza, mas algo para tentar seria ir para o diretório para cada um dos plugins:

~ / .grails / $ {GRAILS_VERSION} / plugins / $ {THE_PLUGIN} / lib

e exclua a menor versão do xml-api - *.

Se você tiver sorte, não estavam quebrando as mudanças na versão mais recente das bibliotecas.

Parece que libs para os plugins são acessíveis ao aplicativo grails inteiros (caso contrário, você não estaria recebendo o conflito).

Eu fiz algo semelhante para atualizar para uma versão mais recente das bibliotecas de relatórios Jasper no plugin de jaspe e ele trabalhou para mim. Você situação pode ser um pouco mais complicado embora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top