Создал плагин в eclipse GGTS, используя Grails 2.3.8
; стандартный плагин, никаких изменений, кроме следующей зависимости (rabbitmq):
//BuildConfig (plugin)
plugins {
compile(":rabbitmq:1.0.0")
build(":release:3.0.1",
":rest-client-builder:1.0.3")
}
Зависимости плагинов были обновлены, скомпилированы и упакованы, а затем сохранены в локальном репозитории maven как 'myplugin:mq:0.1'
и проверены.
Создал проект Grails, добавил в проект плагин:
//BuildConfig (project)
plugins {
build ":tomcat:7.0.52.1"
compile "myplugin:mq:0.5" //<-plugin here
compile ":scaffolding:2.0.3"
compile ':cache:1.1.2'
runtime ":database-migration:1.4.0"
runtime ":jquery:1.11.0.2"
}
Зависимости успешно обновлены.
Проблема
Я не могу ссылаться на библиотеки rabbitmq или зависимости от плагина rabbitmq от myplugin:mq
Не уверен, почему зависимости не наследуются приложением, я не использую exported = false
или что-то еще, чтобы подавить зависимости плагинов.
Пытался
Вместо eclipse я переключился на командную строку (JDK 1.7 + 2.3.8, также пробовал 2.3.7), вручную почистил, обновил, скомпилировал и все еще не могу разрешить классы rabbitmq:
| Error Compilation error: startup failed:
C:\X-projects\ws-ggts_36\rest-api-doc-test\grails-app\controllers\org\raffian\restapi\controller\FundController.
@ line 8, column 1.
import org.springframework.amqp.rabbit.core.RabbitAdmin
^
Локальное развертывание Maven
Я изменил идентификатор группы и артефакта:
mvn install:install-file
-Dfile=grails-test-plugin-0.5.zip
-DgroupId=myplugin
-DartifactId=mq
-Dversion=0.5
-Dpackaging=zip
-DgeneratePom=true
Странности пакета плагинов
После более тщательного изучения упакованного плагина ZIP содержит только эти файлы. Я подозреваю, что это проблема, поскольку библиотеки rabbitmq отсутствуют, а plugin.xml или дескриптор плагина не содержат ссылок на зависимости rabbitmq, поэтому приложение даже не знает об этих зависимостях. Но почему плагин не включает свои собственные зависимости?
Дескриптор плагина
class TestPluginGrailsPlugin {
// the plugin version
def version = "0.5"
// the version or versions of Grails the plugin is designed for
def grailsVersion = "2.3 > *"
// resources that are excluded from plugin packaging
def pluginExcludes = [
"grails-app/views/error.gsp"
]
def title = "Test Plugin Plugin" // Headline display name of the plugin
def author = "Your name"
def authorEmail = ""
def description = 'desc'
def documentation = "http://grails.org/plugin/test-plugin"
def doWithWebDescriptor = { xml ->}
def doWithSpring = {}
def doWithDynamicMethods = { ctx -> }
def doWithApplicationContext = { ctx -> }
def onChange = { event -> }
def onConfigChange = { event -> }
def onShutdown = { event -> }
}
org.grails.plugin
. Вы изменилиgroupId
для своего плагина?compile "myplugin:mq:0.1"
. Можете ли вы также добавить дескриптор плагина к вопросу? - person dmahapatro   schedule 31.10.2014groupId
иartifactId
в дескрипторе, похоже, это не повлияло на выходной файл плагина, но я использую maven для развертывания в локальном репо (см. Выше), чтобы заставитьmyplugin:mq
- person raffian   schedule 31.10.2014grails maven-install
из плагина выпуска? - person dmahapatro   schedule 31.10.2014maven-install
, а в приложении использоватьcompile ":test-plugin:0.5"
- person Burt Beckwith   schedule 31.10.2014groupId
иartifactId
в дескрипторе? я не предпочитаю использовать имена Grails по умолчанию для артефакта плагина - person raffian   schedule 31.10.2014grails maven-install
, мой отказ от именования по умолчанию, вероятно, также усугубил проблему. Опубликовать как ответ, я приму, спасибо за помощь (тоже спасибо, Берт!) - person raffian   schedule 31.10.2014