18

In Grails, there is a variant how to include local plugin from sources. According to docs, one may type in BuildConfig.groovy:

// Useful to test plugins you are developing.
grails.plugin.location.shiro =
        "/home/dilbert/dev/plugins/grails-shiro"

// Useful for modular applications where all plugins and
// applications are in the same directory.
grails.plugin.location.'grails-ui' = "../grails-grails-ui"

The problem is that it doesn't work in Grails 2.0.RC1. I've tried to do grails clean, to install plugin with grails install-plugin and to place it to BuildConfig.groovy. Still unable to resolve.

david
  • 2,529
  • 1
  • 34
  • 50
Dmitry Kurinskiy
  • 533
  • 1
  • 3
  • 16
  • What error do you get? I just tried the `BuildConfig` route, with 2.0RC1 and it seems to work fine... You are doing one or the other aren't you? Not `grails install-plugin` AND placing it in `BuildConfig.groovy` at the same time? – tim_yates Nov 16 '11 at 13:31
  • 1
    That was damn simple. With this `grails.plugin.location.*` line you just shouldn't install plugin at all. Just type this lint in `BuildConfig.groovy` and do `grails run-app`! – Dmitry Kurinskiy Nov 16 '11 at 13:34
  • I was trying to install-plugin or put it into BuildConfig DSL the same time :) thanks @tim_yates – Dmitry Kurinskiy Nov 16 '11 at 13:35

5 Answers5

22

This works for me

grails.plugin.location.shiro = "/home/dilbert/dev/plugins/grails-shiro"

Where shiro is the name of the plugin (not the name of the directory it's in). Make sure the path to the plugin is either an absolute path or the relative path to the plugin from the application.

I've found that this sometimes doesn't work if the plugin is listed in application.properties or BuildConfig.groovy, so if it is, remove it, then execute grails clean and restart the app.

Dónal
  • 185,044
  • 174
  • 569
  • 824
  • 1
    This method works for me by adding to the buildConfig.groovy. +1 to @andruso for his comment concerning dashes. If your plugin contains a hyphen, then wrap the plugin name in quotes. Example: grails.plugin.location.'plugin-name-with-dashes' = "" – Tyler Rafferty Jun 03 '16 at 20:31
8

You can also install the plugin into your local maven cache.

The documentation speaks about this:

3.7.10 Deploying to a Maven Repository

maven-install

The maven-install command will install the Grails project or plugin artifact into your local Maven cache:

grails maven-install

This has the advantage of allowing you to include the plugin in your parent application using the more common ":plugin-name:version" syntax

Which allows your application to determine the best place to retrieve the plugin when in production. From an internal maven-repo or equivalent.

stevecowling
  • 946
  • 9
  • 7
3

With Grails 3.x there is another way to do this. Suppose you've a grails app and plugin (source code) inside the same project directory:

/my-project
---/my-app
---/grails-shiro

To run your local plugin, you must create a settings.gradle file in the my-projectdirectory specifying the location of your application and plugin:

 include 'my-app', 'grails-shiro'

Then add the dependency in your application's build.gradle:

 compile project(':grails-shiro')

You've done.

Look at the plugins documentation for more information.

lifeisfoo
  • 15,478
  • 6
  • 74
  • 115
2

Surround the plugin name with quotes in case it contains dashes:

grails.plugin.location.'plugin-name-with-dashes' = "<path>"
andruso
  • 1,955
  • 1
  • 18
  • 26
0

You can add the .zip file for the plugin in your /lib and it will be installed.

Example:

compile ":myPlugin:1.0"

File:

/lib/myPlugin-1.0.zip

Note: You have to zip the content of the plugin folder.

Source: http://grails.1312388.n4.nabble.com/Insert-own-local-plugin-into-build-config-td4646704.html

Michael
  • 32,527
  • 49
  • 210
  • 370
  • 1
    This is not effective as you would have to zip and replace the file every time an update is done. Forget this step and you'll be tracking down some really confusing problems. – Joseph May 20 '14 at 14:05