Мужская уборная, дамы ...
Вот проблема:
Я интегрирую приложение 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 не может быть указана фаза жизненного цикла.