&引用;“grails maven安装”;vs";grails安装插件maven publisher“;

&引用;“grails maven安装”;vs";grails安装插件maven publisher“;,grails,maven-2,grails-2.3,maven-install-plugin,Grails,Maven 2,Grails 2.3,Maven Install Plugin,我正在使用Grails2.3.6,对这两个SDK命令有一些疑问。我通常不喜欢写这样的“多重问题”,但正如你所看到的,它们在概念上非常接近,我宁愿把它们都放在这里,也不愿陷入5个小问题的泥潭 grails maven install(自从现在被弃用以来)具体做了什么 grails安装插件的作用是什么 grails安装插件maven publisher做什么 什么是maven publisher,它是做什么的 为什么grailsmaven install的工作现在由BuildConfig.groo

我正在使用Grails2.3.6,对这两个SDK命令有一些疑问。我通常不喜欢写这样的“多重问题”,但正如你所看到的,它们在概念上非常接近,我宁愿把它们都放在这里,也不愿陷入5个小问题的泥潭

  • grails maven install(自从现在被弃用以来)具体做了什么
  • grails安装插件的作用是什么
  • grails安装插件maven publisher做什么
  • 什么是
    maven publisher
    ,它是做什么的
  • 为什么
    grailsmaven install
    的工作现在由
    BuildConfig.groovy
    compile
    build
    目标(弃用后)负责

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

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

      但是我们使用一个插件来发布插件,这让事情有点混乱。该功能最初是在Grails core中实现的,但许多不属于core的功能正在作为插件退出。这可以追溯到Quartz插件,然后是Hibernate和Tomcat,最近是脚手架插件。最初,“maven publisher”插件用于发布插件,但随着更多功能的添加,其名称也随之更改,以确保人们不会因为它只适用于maven而感到困惑

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

      Grails可以使用多个Maven兼容的repo来解析插件和jar依赖关系。Maven Central(
      mavenCentral()
      )通常拥有我们所需的所有JAR,但有些在其他回购中。Grails插件发布到(您可以在上看到它们),但同样,您也可以从其他Repo获得插件。使用Maven解析依赖项时,它会缓存在
      $HOME/.m2/repository/
      (这是
      mavenLocal()
      )中,因此每个版本只需下载一次

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

      plugins {
         runtime ':foo:0.42'
         ...
      }
      
      它将从本地缓存中解析,就像它已被正式发布一样


      发布插件的文档中提供了更多信息:

      谢谢@Burt Beckwith(+1)-grails maven install
      在grails 2.3.6中不起作用(完全一样)有什么原因吗?它是如何失败的?您是否首先运行了
      grails compile
      来解析所有依赖项,并检查插件是否已解包?它很可能位于
      $HOME/.grails/2.3.6/projects//plugins
      下,发布插件是否在
      BuildConfig.groovy
      中列出?