先生、女士们...
这是问题所在: 我正在将一个Grails应用程序集成到一个复杂和异构的系统中,该系统使用maven来构建和获取依赖项。 足够公平的是,有几种不同的方法来添加插件,但我希望所有依赖项都由maven管理,因为依赖树中的冲突和作用域将由maven解决。
这将在验证时安装Hibernate插件,并解决其依赖关系。
这是最后的办法,它有效。在此指定构建,将有效地覆盖来自Groovy脚本的依赖关系。我的问题是,有没有办法使用Maven覆盖这些依赖项?很明显,我验证了我试图在provided中作用域的依赖项不包含在任何其他地方(它从Grails-GORM中排除)。有没有简单的方法来解决这个问题?更新:为了防止war解析jar依赖项,有一个--nojars标志,但是grails war mojo的war目标不允许传递args。 exec mojo可以,但是对于此插件实例只有一个执行规范,并且无法指定生命周期阶段exec mojo。
这是问题所在: 我正在将一个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>
该依赖项不会出现在目标构建目录的WEB-INF文件夹中的lib目录中。但是它仍然被打包在war归档文件中。 请记住,使用maven处理所有与依赖项相关的事情是我们的目标。 但是无论如何,由于似乎没有希望使用pom来排除它,我尝试使用BuildConfig:
case Environment.PRODUCTION :
build( "org.grails.plugins:hibernate:1.3.7" ) {
excludes "javassist"
}
break
这是最后的办法,它有效。在此指定构建,将有效地覆盖来自Groovy脚本的依赖关系。我的问题是,有没有办法使用Maven覆盖这些依赖项?很明显,我验证了我试图在provided中作用域的依赖项不包含在任何其他地方(它从Grails-GORM中排除)。有没有简单的方法来解决这个问题?更新:为了防止war解析jar依赖项,有一个--nojars标志,但是grails war mojo的war目标不允许传递args。 exec mojo可以,但是对于此插件实例只有一个执行规范,并且无法指定生命周期阶段exec mojo。