2015-12-12 3 views
1

Я использую этот build.grade. Когда я запускаю gradlew build, он генерирует файл jar только с источником, а не с камнем.jar в папке libs. Как я должен это делать?Зависимости, не появляющиеся в банке с Gradle?

enter image description here

apply plugin: 'java' 
apply plugin: 'eclipse' 

// Source sets in the project, specify source directories 
sourceSets { 
    main { 
     java.srcDir("${projectDir}/src/") 
     resources.srcDir("${projectDir}/src/") 
    } 
} 

// Dependencies for the project are stored in the libs directory 
dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
} 

// Control what goes into the JAR 
jar { 

    manifest { 
     attributes 'Main-Class': 'com.elsea.sublimelauncher.Driver' 
    } 

    // Include all the classes except the tests 
    include("com/elsea/sublimelauncher/**") 
} 
+0

Вам необходимо использовать плагин shadowl jar jar. Вы найдете его в Интернете. – Opal

+0

Почему так? Является ли gradle самостоятельно неспособным вставлять зависимости? Я просто немного запутался в этом процессе в целом. – Connorelsea

+0

Потому что jar по умолчанию не включает зависимости. И никогда этого не делал. – Opal

ответ

4

По умолчанию jar задача Gradle создает исполняемый файл фляги из исходных файлов проекта. Он не будет содержать транзитивных библиотек, необходимых для вашей программы. Это хорошо для веб-серверов, потому что они обычно хранят все банки в специальной папке lib, но не подходят для многих автономных программ.

Что вы хотите сделать, это создать жирную банку, которая будет содержать все классы и ресурсы в одном файле jar. Если вы использовали Maven, вы могли видеть такие файлы, как «my-program-v1.0-jar-with-dependcies.jar»

Существует shadow plugin для градации, которая может делать то же самое. Wiki в github содержит всю информацию о том, как использовать его в вашем проекте.

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