Grails интерпретирует zip в моем репо как плагин, хотя на самом деле это не плагин - PullRequest
6 голосов
/ 02 февраля 2012

Зависимость моего проекта grails (модуль, который я создаю) выводит zip-файл как часть своего процесса сборки (для использования в приложении flex) с использованием maven-assembly-plugin. Этот zip-файл выводится в мое локальное хранилище mvn в той же директории, что и jar-файл, который выводится при сборке модуля, т.е.

.m2/repository/com/mypackage/domain/1.0.0-SNAPSHOT/domain-1.0.0-SNAPSHOT.jar
.m2/repository/com/mypackage/domain/1.0.0-SNAPSHOT/domain-1.0.0-SNAPSHOT-generated-tos.zip

Поскольку модуль является (транзитивной) зависимостью в моем проекте grails, jar и zip оба кэшируются в ivy-cache

Теперь, когда я пытаюсь запустить приложение Grails, Grails, похоже, обнаруживает этот zip-файл из кэша плюща и пытается установить его как плагин, который по понятным причинам не работает ...

| Loading Grails 2.0.0
| Configuring classpath.
| Environment set to development.....
| Error Zip ~/.grails/ivy-cache/com.mypackage/domain/zips/domain-1.0.0-SNAPSHOT-generated-tos.zip is not a valid plugin

Необходимо, чтобы zip был собран в репозиторий, поскольку другой модуль использует плагин mvn-dependency-plugin для его распаковки в процессе сборки. Таким образом, мне нужно найти способ сказать Grails игнорировать его, поскольку это не плагин zip. Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 13 мая 2013

Без проверки этого я бы предположил, что все это было связано с конфигурацией BuildConfig.groovy .

Вещи, которые вы помещаете в блок зависимостей, должны быть включены как есть, тогда как вещи в блоке плагинов считаются почтовым индексом плагина.

Я наткнулся на проблему, когда неправильно настроил проект. Приведенный ниже пример не проверен:)

dependencies {
     compile "my.project:artifact:0.1.0:zip"
}
plugins {
    compile "my.project:artifact:0.1.0" // Automatic found as a zip project

}

0 голосов
/ 16 марта 2012

Это потому, что в Grails упаковка плагинов по умолчанию является zip, и любой архив, зависящий от этого формата, будет считаться плагином.

Попробуйте сделать исключения исключительными по умолчанию:

def excludes = {
    transitive = false
}
...