Исключая зависимости grails-plugin с помощью POM - PullRequest
3 голосов
/ 01 декабря 2011

Мужская уборная, дамы ...

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

Это установит плагин hibernate во время проверки и разрешит его зависимости

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

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

Я пытался

<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

Это было последнее средство, и оно работает. Если вы укажете сборку здесь, вы фактически переопределите зависимости, которые исходят из скрипта groovy.

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

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

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

ОБНОВЛЕНИЕ:

Чтобы война не разрешила зависимости от jar, есть флаг --nojars, но цель войны, связанная с moils grails war mojo, не позволяет передавать аргументы. Exec mojo делает, однако для экземпляра этого плагина возможна только одна спецификация выполнения, и для exec mojo не может быть указана фаза жизненного цикла.

1 Ответ

0 голосов
/ 12 октября 2015

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

grails.project.dependency.resolution = {
     pom true

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...