2011-12-01 2 views
3

мужские, женские ...исключающие зависимостей Grails-плагин с помощью POM

Вот вопрос: Я интегрируя приложения Grails в сложной и гетерогенной системе, которая использует Maven для создания и извлечения зависимостей. Достаточно справедливо, есть несколько способов добавить плагин, но я хотел бы иметь все зависимости, управляемые maven, так как конфликты и области видимости деревьев зависимостей будут затем решены maven.

Это позволит установить плагин спящего режима во время проверки, и устранить его зависимости

<execution> 
<id>Hibernate plugin</id> 
     <phase>validate</phase> 
     <goals> 
    <goal>install-plugin</goal> 
</goals> 
<configuration> 
    <pluginName>hibernate</pluginName> 
    <pluginVersion>${grails.version}</pluginVersion> 
</configuration> 
</execution> 

По-видимому, нет никакого способа, чтобы указать исключения непосредственно в конфигурации выполнения, чтобы предотвратить его от решения своих зависимостей (в зависимости .groovy script) самостоятельно.

Я попытался

<dependency> 
    <groupId>javassist</groupId> 
    <artifactId>javassist</artifactId> 
    <version>3.11.0.GA</version> 
    <scope>provided</scope> 
</dependency> 

Зависимости не будет появляться в Lib директории в папке WEB-INF в целевой сборке реже. Однако он все еще упакован в военный архив. Помните, что целью является использование maven для всех вещей, связанных с зависимостями. Но в любом случае, так как это, кажется, нет никакой надежды исключить его с помощью POM, я пытаюсь с помощью BuildConfig с:

case Environment.PRODUCTION : 
    build("org.grails.plugins:hibernate:1.3.7") { 
     excludes "javassist" 
    } 
break 

Это было последним средством, и она работает. Указав здесь сборку, она будет эффективно переопределять зависимости, которые возникают из строкового скрипта.

Так что мой вопрос: есть ли способ переопределить эти зависимости с помощью maven?

Очевидно, что я проверял, что зависимость, которую я пыталась предоставить в объеме, не включена нигде (она исключена из grails-gorm).

Есть ли простой способ решить эту проблему?

UPDATE:

Чтобы предотвратить войну с разрешения зависимостей фляги, есть --nojars флаг, но цель войны в Grails войны харизмы не допускает прохождение арг. Исполнение mojo делает, однако для экземпляра этого плагина существует только одна возможность выполнения, и для exec mojo не может быть определена фаза жизненного цикла.

ответ

0

Я думаю, что вы были на правильном пути в своей первой попытке отметить зависимость как provided. Вероятно, часть, которую вы пропустили, вы не отключили управление зависимостью Grails. Вы что, установив pom true в BuildConfig.groovy и удалить всю другую зависимость, например:

grails.project.dependency.resolution = { 
    pom true 

    // inherit Grails' default dependencies 
    inherits("global") { 
    } 
} 

Как только это будет сделано, специалист будет обрабатывать все depencencies.

EDIT: Я только понял, что это был действительно старый пост, так что pom true, возможно, не было представлено в версии Grails, которую вы использовали тогда. Я думаю, что это произошло в 2.2 или что-то в этом роде.

Смежные вопросы