“grails maven-install”vs“grails install-plugin maven-publisher”

时间:2014-04-02 16:03:35

标签: grails maven-2 grails-2.3 maven-install-plugin

我使用的是Grails 2.3.6,并围绕这两个SDK命令提出了一些问题。我通常不喜欢写#34;多问题"像这样,但正如你所看到的,它们在概念上非常接近,我宁愿把它们全部放在这里,而不是用5个小小的问题陷入困境。

  • 具体做了什么(确实已经弃用了)grails maven-install做了什么?
  • grails install-plugin做什么?
  • grails install-plugin maven-publisher做什么?
  • 什么是maven-publisher,它的作用是什么?
  • 为什么grails maven-install的工作现在由BuildConfig.groovy compilebuild目标(弃用后)负责?

1 个答案:

答案 0 :(得分:3)

2.3中删除了install-plugin脚本,因为“安装”插件没有多大意义。相反,我们像在jar文件上一样添加对插件的依赖,让Grails解析依赖关系并使其可用于应用程序。现在我们在BuildConfig.groovy中添加所有deps。

使用install-plugin的旧方法过于简单,但现在使用BuildConfig.groovy中的依赖关系解析DSL,我们可以指定依赖关系的范围,指定依赖关系的依赖关系的排除(例如,如果插件X取决于插件(或jar)Y,但Y只是可选的,或者它会导致问题,你可以只安装X并排除Y),并且通常可以对这个过程有更多的控制。

但我们使用插件来发布插件,这让事情有点混乱。该功能最初是在Grails核心中,但许多不属于核心的功能正在作为插件被拔出。这开始于Quartz插件,后来又使用Hibernate和Tomcat,最近使用了scaffolding插件。最初使用“maven-publisher”插件来发布插件,但随着更多功能的添加,名称被更改以确保人们不会感到困惑,因为它只适用于Maven。

因此,要发布插件,我们需要“安装”取代maven-publisher插件的http://grails.org/plugin/release插件。您可以使用2.2.x及更早版本中的install-plugin脚本,但是您应该不再使用install-pluginuninstall-plugin,因为它们已经在2.3中消失了。

Grails可以使用多个与Maven兼容的repos来解析插件和jar依赖项。 Maven Central(mavenCentral())通常拥有我们需要的所有罐子,但有些则在其他库房中。 Grails插件发布到http://repo.grails.org/(您可以在http://repo.grails.org/grails/plugins/org/grails/plugins/看到它们)但同样,您也可以从其他repos获取插件。当使用Maven解析依赖关系时,它会缓存在$HOME/.m2/repository/中(这是mavenLocal()),所以你只需要下载每个版本一次。

maven-install插件中的release脚本构建了一个插件zip并生成关联的元数据文件,并将所有内容复制到$HOME/.m2/repository/中的正确位置,之后,依赖项解析器可以'知道文件是否存在,因为它们是从“真实”的仓库下载并缓存在那里,或者通过脚本放在那里。但这没关系 - 如果文件在那里,它们是可用的。因此,一旦在版本为0.42的“foo”插件上运行maven-install,就可以在应用程序的BuildConfig.groovy中为它添加依赖项:

plugins {
   runtime ':foo:0.42'
   ...
}

它将从本地缓存中解析,就像它已正式发布一样。

发布插件的文档中提供了更多信息:http://grails-plugins.github.io/grails-release/docs/manual/