grails - "grails maven-install"与 "grails install-plugin maven-publisher"

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

我正在使用 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目标(弃用后)?

最佳答案

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

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

但是我们使用插件来发布插件,这让事情变得有点困惑。该功能最初位于 Grails 核心中,但许多不属于核心的功能被作为插件移除。这可以追溯到 Quartz 插件,后来是 Hibernate 和 Tomcat,最近是脚手架插件。最初“maven-publisher”插件用于发布插件,但随着更多功能的添加,名称发生了更改,以确保人们不会混淆它只适用于 Maven。

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

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

来自 release 插件的 maven-install 脚本构建插件 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/

关于grails - "grails maven-install"与 "grails install-plugin maven-publisher",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22817046/

相关文章:

mysql - 浮点值未正确保存到数据库

java - 如何终止 NetBeans 中正在运行的 Maven 构建?

html - 如何在.gsp文件中配置必需的属性

regex - 使用groovy RegEx来获取属性值:grails消息标签中的代码

oracle - 错误:ORA-06550:第4行,第205列:PLS-00103:在预期以下情况之一时遇到了符号 “end-of-file”:

maven-2 - 如何删除 Hudson 中不需要的构建工件

java - 在不构建子模块的情况下安装父 POM

Grails Spring Security 示例应用程序不工作

使用 JVM fork 时 Grails mixins 不起作用

grails - 如果索引大于 255,则数据绑定(bind)不起作用