У меня есть мультипроект, и мне нужно иметь возможность запустить класс из определенного подпроекта, используя gradle . Я попытался просто настроить свой пользовательский sourceSets и запустить задачу типа JavaExec , но столкнулся с довольно специфической проблемой. Проблема в том, что в моей пользовательской исходной папке слишком много Java-файлов, и в результате путь к классу, который пытается создать задача JavaExec (с абсолютным путем к каждому отдельному классу java), слишком длинный для Команда cmd , которую JavaExec пытается вызвать.
Я нашел обходной путь, который предлагает создать файл jar со всеми файлами .java и просто передать его как classpath моему JavaExec задача. Таким образом, команда остается красивой и короткой. Я сделал задание, которое должно это сделать, но оно не работает.
Вот мой пользовательский sourceSets :
sourceSets {
mySourceSet{
java {
srcDirs {
'projectOne/src/main/java/'
}}}}
Вот моя задача, которая должна создать банку , но это не так:
task launcherJar(type: Jar) {
manifest {
attributes "Class-Path": sourceSets.mySourceSet.java.srcDirs.join(" ")}}
Вот моя задача javaExec, которая должна использовать файл .jar:
task task1(type: JavaExec) {
classpath = launcherJar.outputs.files
main = "com.package1.MyClass"
}
Проблема в том, что jar файл пуст.
Я пробовал разные вещи со свойством " manifest ", но, похоже, ничего не работает.
Мне нужно, чтобы файл jar содержал путь к классам, чтобы я мог использовать его в JavaExec .
Заранее спасибо.