Как добавить Java JAR файлы в проект Grails?

У меня есть несколько проектов Java/Maven, которые я хочу использовать в проекте Grails 2.0.4. Я пробовал различные подходы, например:

  • Установка файлов JAR в моем локальном репозитории maven и выполнение grails install-dependency com.foo:my-project:0.0.1-SNAPSHOT
  • Копирование файлов JAR в папку lib из grails.
  • Добавление compile com.foo:my-project:0.0.1-SNAPSHOT в раздел зависимостей BuildConfig.groovy
  • Раскомментирование mavenLocal() и передача /home/me/.m2/repository

Возможно, я попробовал несколько других вещей, например, суеверно бросая в grails clean всякий раз, когда это удобно. В каждом случае grails compile получается следующий результат: сбой компиляции, неспособный разрешить любую ссылку на любой из классов в любом из JAR.

Любая идея, что мне не хватает?

Ответы

Ответ 1

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

Ответ 2

Добавление jar в папку "lib" было недостаточно для меня. Мне пришлось бежать:

grails compile --refresh-dependencies

После чего он работал.

Ответ 3

Если Grails по умолчанию не берет локальные библиотеки .jar, расположенные в <GRAILS-APP-DIR>/lib (кажется, что с Grails 3.X удалена конфигурация по умолчанию папки /lib), простой способ ее принудительного применения изменяет build.gradle чтобы добавить для него зависимость локального каталога.

Для почти всех случаев, конечно, лучше использовать репозитории maven, однако возможно наличие некоторых db-vendor-drivers или других библиотек, которые не находятся в публичном репо. Для этого для этих библиотек измените <GRAILS-APP-DIR>/build.gradle и добавьте что-то вроде:

dependencies {
    ...
    compile fileTree(dir: './lib', include: ['*.jar'])
    ...
}

Если вы хотите, вы можете использовать другой каталог (не /lib), так как вы указали его. Разумеется, используйте правильную область (например, для db-vendor-drivers, которая, вероятно, уже находится в пути класса контейнера приложения, область будет runtime вместо compile)

Надеюсь, что это поможет,

Ответ 4

Зависимость от обновления Grails, чистая и т.д. не работала для меня. То, что сработало для меня, было выходом из демона Grails и снова начала Grails.