Проблема в том, что, хотя вы можете использовать пакеты для любого артефакта, для контроллеров принято удалять пакет и «Контроллер» для создания URL-адресов, например, PersonController -> / appname / person / action_name. Таким образом, в действительности все становится плоским.
В 1.2 и более, в 1.3 все изменилось, поэтому плагины компилируются отдельно от кода приложения (и сначала компилируются), и это дает вам возможность заменить артефакт плагина версией приложения. Поскольку вы не должны редактировать код плагина, это дает вам возможность расширять или заменять артефакт плагина, просто используя то же имя.
Я склонен использовать UrlMappings для обхода подобных вещей, когда есть два одинаково названных контроллера. Например, скажем, у вас есть UserController администратора, который позволяет выполнять низкоуровневые действия CRUD, и обычный UserController, с которым работают пользователи. Я бы назвал административный контроллер AdminUserController и сопоставил его с / admin / user / *, а UserController оставил как есть. Административные GSP будут в views / adminUser, а остальные - в views / user, поэтому здесь нет конфликта. Это дает дополнительное преимущество - возможность легко защищать - map / admin / ** -> ROLE_ADMIN. Соглашения удобны, но это простой шаг настройки, который решает эту проблему для меня.
Хорошей новостью является то, что GRAILS-1243 определенно будет реализован в 2.0 и, возможно, в 1.4. И плагин, на который ссылается Ким Бетти в комментариях к GRAILS-1243, выглядит интересно.