如何将带有私有插件的grails应用部署到云

如何将带有私有插件的grails应用部署到云,grails,Grails,我为两个grails应用程序之间共享的域对象创建了一个私有插件。我能够在本地环境中成功地使用插件,因为我已经通过BuildConfig文件设置了它的路径。例如,我有以下目录: appOne/ myPlugin/grails-my-plugin-0.1.zip (myPlugin is a grails plugin project dir) 在:appOne/grails-app/conf/BuildConfig.groovy: grails.plugin.location.compi

我为两个grails应用程序之间共享的域对象创建了一个私有插件。我能够在本地环境中成功地使用插件,因为我已经通过BuildConfig文件设置了它的路径。例如,我有以下目录:

appOne/
myPlugin/grails-my-plugin-0.1.zip     (myPlugin is a grails plugin project dir)
在:appOne/grails-app/conf/BuildConfig.groovy:

grails.plugin.location.compileMyPlugin = "../myPlugin"

我的问题是,什么是正确的/最好的方式来处理“打包”这个插件与我的应用程序版本,这样我就可以将它部署到一个云服务,它将无法下载?我想有一种方法可以让grails帮你做这件事,但我不确定。(我对grails非常陌生)

构建脚本应该首先打包插件,然后将插件安装到grails应用程序中。至少,我必须这样做。如果您尝试在BuildConfig依赖项中指定插件并将其作为内联插件,Grails往往会对此表示不满。

您的构建脚本应该首先打包插件,然后将插件安装到Grails应用程序中。至少,我必须这样做。如果您尝试在BuildConfig依赖项中指定您的插件并将其作为内联插件,Grails往往会对此表示不满。

当您创建.war文件进行部署时,Grails只包含您的插件。所以你没有什么特别的事要做

如果您的项目是在云中生成的,您可以尝试将文件路径指定为本地存储库:

repositories {
  grailsCentral()
  localRepo "../myPlugin"
}

只要把你的压缩插件放到这个文件夹中,grails就会找到它。

当你创建.war文件进行部署时,grails只包含你的插件。所以你没有什么特别的事要做

如果您的项目是在云中生成的,您可以尝试将文件路径指定为本地存储库:

repositories {
  grailsCentral()
  localRepo "../myPlugin"
}

只要把你的压缩插件放到这个文件夹中,grails就会找到它。

我在grails 2.1.0中完成了以下工作来解决这个问题:

1) 在Grails插件项目中:
grails包插件
生成grails-myplugin-0.1.zip文件

2) 将插件复制到我的应用程序的lib目录(appOne/lib/grails-myplugin-0.1.zip)

3) 在BuildConfig.groovy中

  • 删除:grails.plugin.location.compilemyPlugin=“../myPlugin”
    这在开发过程中被用来防止重建-重新安装过程
    更新插件中包含的文件时

  • 添加:

    grails.plugin.location.compileMyPlugin = "../myPlugin"
    
    插件{
    ..
    编译:grails myPlugin:0.1'
    }

4) 通过清理appOne进行测试,然后重新运行,该插件将通过lib目录安装/重新安装插件

5) 提交所有更改并将插件zip文件添加到appOne和push。云提供商,

在这种情况下,Heroku可以解决依赖关系。

我在Grails 2.1.0中完成了以下工作来解决这个问题:

1) 在Grails插件项目中:
grails包插件
生成grails-myplugin-0.1.zip文件

2) 将插件复制到我的应用程序的lib目录(appOne/lib/grails-myplugin-0.1.zip)

3) 在BuildConfig.groovy中

  • 删除:grails.plugin.location.compilemyPlugin=“../myPlugin”
    这在开发过程中被用来防止重建-重新安装过程
    更新插件中包含的文件时

  • 添加:

    grails.plugin.location.compileMyPlugin = "../myPlugin"
    
    插件{
    ..
    编译:grails myPlugin:0.1'
    }

4) 通过清理appOne进行测试,然后重新运行,该插件将通过lib目录安装/重新安装插件

5) 提交所有更改并将插件zip文件添加到appOne和push。云提供商,

在这种情况下,Heroku可以解决依赖关系。

我使用Heroku,不能直接部署war文件。推送项目,Heroku使用依赖项管理工具构建文件。当Heroku构建我的项目时,我的插件不是公共的(并且我没有运行一个互联网可访问的存储库),因此它无法解决插件依赖关系。请参阅我的更新。您应该在本地机器上尝试一下,看看Grails在哪里搜索插件。可能是您必须将zip文件重命名为+1-localRepo似乎无效。尽管这不起作用,但我还是很感谢你的帮助,并为我指明了正确的方向。如果zip文件移到root/deploy plugins中,前缀“grails-”从.zip文件中删除,那么存储库{flatDir name:'localPlugins',dirs:'./deploy plugins'}对我来说是有效的。我使用Heroku,并且我不能直接部署war文件。推送项目,Heroku使用依赖项管理工具构建文件。当Heroku构建我的项目时,我的插件不是公共的(并且我没有运行一个互联网可访问的存储库),因此它无法解决插件依赖关系。请参阅我的更新。您应该在本地机器上尝试一下,看看Grails在哪里搜索插件。可能是您必须将zip文件重命名为+1-localRepo似乎无效。尽管这不起作用,但我感谢您的帮助,它确实为我指明了正确的方向。存储库{flatDir name:'localPlugins',dirs:'./deploy plugins'}-如果zip文件移动到根/部署插件中,并且前缀“grails-”从.zip文件中删除,这对我来说很有用。这很有趣……那么你是说grails将通过应用程序的lib目录解析插件?是的。它会在lib目录中找到插件并安装它。似乎您偶然发现了一个未记录的特性:)这很有趣……那么您是说Grails将通过应用程序的lib目录解析插件?是的。它会在lib目录中找到插件并安装它。似乎您偶然发现了一个未记录的功能:)