1

我正在使用 Grails 2.3.6,并且对这 2 个 SDK 命令有一些疑问。我通常不喜欢这样写“多问题”,但正如你所见,它们在概念上是如此接近,以至于我宁愿把它们都放在这里,也不愿用 5 个小问题陷入困境。

  • (做了;因为它现在已被弃用)grails maven-install具体做什么?
  • 做什么grails install-plugin
  • 做什么grails install-plugin maven-publisher
  • maven-publisher什么,它有什么作用?
  • 为什么现在的工作是'或目标grails maven-install的责任(弃用后)?BuildConfig.groovycompilebuild
4

1 回答 1

3

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

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

但是我们使用插件来发布插件,这让事情有点混乱。该功能最初在 Grails 核心中,但许多不属于核心的功能被作为插件提取出来。这从 Quartz 插件开始,然后是 Hibernate 和 Tomcat,最近是脚手架插件。最初“maven-publisher”插件用于发布插件,但随着更多功能的添加,名称已更改,以确保人们不会混淆它仅适用于 Maven。

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

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

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

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

并且它会从本地缓存中解析出来,就像它已经正式发布一样。

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

于 2014-04-02T17:01:16.633 回答