2016-10-21 8 views
0


Я совершенно новый с Gradle. Для начала я пытаюсь создать скрипт сборки для простого консольного Java-приложения без использования java-плагина. В моем коде есть только две зависимости из maven-репозитория. Итак, моя сборка содержит одну задачу, которая расширяет JavaCompile, в которой я указываю classpath, destination, ect.
Мой проект не применяется Java плагин, поэтому мне нужно создать конфигурацию зависимостей от моей, как это:
Конфигурация зависимости привязки коленчатого вала с заданием

configurations { 
     myCompile { 
     desciprtion = 'my own compile dependency configuration' 
     transitive = true 
     } 
} 

Тогда я могу связать зависимости от этой конфигурации:

dependencies { 
myCompile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.7' 
myCompile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.7' 
} 

Насколько я понимаю, после этого я должен привязать эту конфигурацию к моему компилятору, но я не могу понять, как это сделать. Может кто-нибудь указать на это мне? Любая помощь будет действительно оценена)

P.S. Я прочитал это In Gradle, associating task with a dependency configuration, и есть упомянутые источники. Итак, я могу создать sourceet myThing, и для меня будет создана задача с настройкой? Будет ли это работать без java-плагина?

P.P.S. Я хочу достичь этой простой задачи без плагинов только с целью изучения Gradle, и это базовые инструменты:

ответ

0

В конце концов, я использовал этот код для компиляции проекта без Java плагина:

task resolveCompileDependency(type: Copy) { 
    //download libraries specified in dependency configuration 
    def lib_files = configurations.myCompile.resolve() 
    //print names of downloaded files and copy to build directory (optional) 
    lib_files.each {File file -> 
     println file.name 
    } 
    from lib_files 
    into 'build/classes' 
    outputs.files(lib_files) 
} 

И компилировать задача просто обычная JavaCompile задача, которая зависит от resolveCompileDependency.
Надеюсь, это поможет кому-то.

0

Сначала создайте задачу компиляции с использованием типа задачи exec, см. DSL refreence for Exec.

При создании задачи компиляции, вы можете получить ссылку на конфигурации с помощью getAsPath(), см API doc for FileCollection

configurations.myCompile.getAsPath() 

А если серьезно, я делать рекомендуется применять Java плагин для этого.

Если вы чувствуете потребность в быстром начальном курсе, попробуйте this video.

+0

Спасибо за ссылку! Зачем использовать Exec для компиляции, а не для JavaCompile? – Worm359

+0

И в документации по задаче (https://docs.gradle.org/current/dsl/org.gradle.api.Task.html) перечислены объекты, которые могут использоваться как зависимость, но которые, по-видимому, относятся только к зависимости к другим задачам (пункт «Зависимости задач» и «Задание заданий») – Worm359

+0

Исполнение может использоваться, если вы хотите написать всю компиляцию самостоятельно, но, как вы говорите, в этом нет никакой реальной необходимости. –