2015-06-29 2 views
0

У меня есть проект с несколькими модулями, который строит ОК. Теперь я хочу реализовать задачу, которая на самом деле будет готовить поставляемый пакет всех встроенных модулей вместе со всеми их зависимостями и всем остальным, что необходимо для запуска основного класса из модуля-1.jar.Gradle, как скопировать все библиотеки времени выполнения, включая банки из зависимых проектов

Для достижения это я хочу скопировать все зависимости во время выполнения в папку вместе с некоторыми конфигурационными файлами среды (свойствами, XML), а затем упаковать их в файл архива.

Скажем, у меня есть эта структура:

Root Project 
    / \ 
module-1 module-2 

И модуль-1 зависит от модуля-2

module-1.gradle: 

task runModule1 << { 
    // Invoke some methods to prepare the module-1 run 
    // such as setting module-1 runLocation 
    copy {from configurations.runtime into runLocation} 
} 

dependencies { 
    compile project(':module-2') 
    //... Other thirds party dependencies 
} 

В конце этой копии вызова выше всех зависимостей сторонних копируются очень хорошо, где Они нужны мне. Однако модуль-2.jar не интересует и почему. Конечно, я могу повторить сам и вручную скопировать модуль-2.jar из папки сборки модуля-2, но для меня это выглядит не так, как нужно. Для этого это должно быть приятное решение.

Заранее благодарю вас за ваши данные.

+0

Не должно быть * Однако модуль-2.jar не (...) *? – Opal

+0

И почему вы не используете плагин 'application'? – Opal

+0

Спасибо Опал. Я обратился к проблеме с названием jar name – Julian

ответ

0

То, что вы описываете, звучит точно так, как это делает Application plugin. Он будет обрабатывать все копии зависимостей и т. Д. Для вас.

Предполагая, что module-1 содержит ваш главный класс, добавьте следующее в module-1 конфигурации:

apply plugin: 'application' 
mainClassName = "org.stackoverflow.example.MyApp" 

Поскольку module-1 имеет его зависимости по отношению к module-2 объявляются правильно, теперь вы можете запустить его так:

gradle module-1:run 
:module-2:compileJava 
:module-2:processResources UP-TO-DATE 
:module-2:classes 
:module-1:compileJava 
:module-1:processResources UP-TO-DATE 
:module-1:classes 
:module-1:run 
+0

Но мой вопрос все еще стоит. Почему модуль-2.jar не копируется, поскольку он является допустимой зависимостью во время выполнения? – Julian

+0

Я только что понял, что в плагин приложения включен плагин распространения, который может быть настроен для выполнения дополнительной работы по подготовке среды, а затем содержит конкретные файлы, собранные вместе с банками. Так что да, ваш ответ помог решить мою проблему. Большое спасибо. Что касается nodule-2.jar, который не копируется ко мне, выглядит как ошибка. – Julian

Смежные вопросы