Главная страница
Навигация по странице:

  • Определение задач Задача — это ключевое слово, которое используется для определения задачи в сценарии сборки. Посмотрите на следующий пример, который представляет задачу с именем hello

  • Добавление зависимостей к задачам

  • Пропуск задач Пропуск задач может быть выполнен путем передачи предиката замыкания. Это возможно только в том случае, если метод задачи или замыкание генерируют исключение

  • StopExecutionException

  • Basic Java Tools for Building & Testing Apps


    Скачать 4.76 Mb.
    НазваниеBasic Java Tools for Building & Testing Apps
    АнкорJUNIt
    Дата14.11.2022
    Размер4.76 Mb.
    Формат файлаpdf
    Имя файла5_2_0_Maven_JUnit_Tutorial.pdf
    ТипРеферат
    #787190
    страница6 из 16
    1   2   3   4   5   6   7   8   9   ...   16
    each (), который выполняет итерацию по элементам Iterable
    Interface.
    Скопируйте и сохраните следующий код в файл build.gradle . task groovyJDK << {
    String myName = "Marc"; myName.each() { println "${it}"
    };
    }
    Выполните следующую команду в командной строке. Он выполняет приведенный выше скрипт. Вы должны выполнить это, где хранится файл build.gradle.
    C:\> gradle –q groovyJDK
    Выход:
    M a r c
    Средства доступа к недвижимости
    Вы можете автоматически получить доступ к соответствующим методам получения и установки определенного свойства, указав его ссылку.

    Следующий фрагмент определяет синтаксис методов getter и setter свойства buildDir .
    // Using a getter method println project.buildDir println getProject().getBuildDir()
    // Using a setter method project.buildDir = 'target' getProject().setBuildDir('target')
    Необязательные скобки при вызове метода
    Groovy содержит специальную функцию в вызове методов, которая является необязательной скобкой для вызова метода. Эта функция также применима к сценариям Gradle.
    Посмотрите на следующий синтаксис. Это определяет метод, вызывающий systemProperty тестового объекта. test.systemProperty 'some.prop', 'value' test.systemProperty('some.prop', 'value')
    Закрытие как последний параметр метода
    Gradle DSL использует замыкания во многих местах. Если последний параметр метода является закрытием, вы можете поместить закрытие после вызова метода.
    Следующий фрагмент кода определяет синтаксис, используемый Closures в качестве параметров метода repositories (). repositories { println "in a closure"
    } repositories() { println "in a closure"
    } repositories({ println "in a closure" })
    Импорт по умолчанию
    Gradle автоматически добавляет набор операторов импорта в сценарии Gradle. В следующем списке показаны пакеты импорта по умолчанию для скрипта Gradle.
    Ниже приведены стандартные пакеты импорта в скрипт Gradle.
    import org.gradle.* import org.gradle.api.* import org.gradle.api.artifacts.* import org.gradle.api.artifacts.cache.* import org.gradle.api.artifacts.component.* import org.gradle.api.artifacts.dsl.* import org.gradle.api.artifacts.ivy.* import org.gradle.api.artifacts.maven.* import org.gradle.api.artifacts.query.* import org.gradle.api.artifacts.repositories.* import org.gradle.api.artifacts.result.* import org.gradle.api.component.* import org.gradle.api.credentials.* import org.gradle.api.distribution.* import org.gradle.api.distribution.plugins.* import org.gradle.api.dsl.* import org.gradle.api.execution.* import org.gradle.api.file.* import org.gradle.api.initialization.* import org.gradle.api.initialization.dsl.* import org.gradle.api.invocation.* import org.gradle.api.java.archives.* import org.gradle.api.logging.* import org.gradle.api.plugins.* import org.gradle.api.plugins.announce.* import org.gradle.api.plugins.antlr.* import org.gradle.api.plugins.buildcomparison.gradle.* import org.gradle.api.plugins.jetty.* import org.gradle.api.plugins.osgi.* import org.gradle.api.plugins.quality.* import org.gradle.api.plugins.scala.* import org.gradle.api.plugins.sonar.* import org.gradle.api.plugins.sonar.model.* import org.gradle.api.publish.* import org.gradle.api.publish.ivy.* import org.gradle.api.publish.ivy.plugins.* import org.gradle.api.publish.ivy.tasks.* import org.gradle.api.publish.maven.* import org.gradle.api.publish.maven.plugins.* import org.gradle.api.publish.maven.tasks.*
    import org.gradle.api.publish.plugins.* import org.gradle.api.reporting.* import org.gradle.api.reporting.components.* import org.gradle.api.reporting.dependencies.* import org.gradle.api.reporting.model.* import org.gradle.api.reporting.plugins.* import org.gradle.api.resources.* import org.gradle.api.specs.* import org.gradle.api.tasks.* import org.gradle.api.tasks.ant.* import org.gradle.api.tasks.application.* import org.gradle.api.tasks.bundling.* import org.gradle.api.tasks.compile.* import org.gradle.api.tasks.diagnostics.* import org.gradle.api.tasks.incremental.* import org.gradle.api.tasks.javadoc.* import org.gradle.api.tasks.scala.* import org.gradle.api.tasks.testing.* import org.gradle.api.tasks.testing.junit.* import org.gradle.api.tasks.testing.testng.* import org.gradle.api.tasks.util.* import org.gradle.api.tasks.wrapper.* import org.gradle.authentication.* import org.gradle.authentication.http.* import org.gradle.buildinit.plugins.* import org.gradle.buildinit.tasks.* import org.gradle.external.javadoc.* import org.gradle.ide.cdt.* import org.gradle.ide.cdt.tasks.* import org.gradle.ide.visualstudio.* import org.gradle.ide.visualstudio.plugins.* import org.gradle.ide.visualstudio.tasks.* import org.gradle.ivy.* import org.gradle.jvm.* import org.gradle.jvm.application.scripts.* import org.gradle.jvm.application.tasks.* import org.gradle.jvm.platform.* import org.gradle.jvm.plugins.* import org.gradle.jvm.tasks.* import org.gradle.jvm.tasks.api.*
    import org.gradle.jvm.test.* import org.gradle.jvm.toolchain.* import org.gradle.language.assembler.* import org.gradle.language.assembler.plugins.* import org.gradle.language.assembler.tasks.* import org.gradle.language.base.* import org.gradle.language.base.artifact.* import org.gradle.language.base.plugins.* import org.gradle.language.base.sources.* import org.gradle.language.c.* import org.gradle.language.c.plugins.* import org.gradle.language.c.tasks.* import org.gradle.language.coffeescript.* import org.gradle.language.cpp.* import org.gradle.language.cpp.plugins.* import org.gradle.language.cpp.tasks.* import org.gradle.language.java.* import org.gradle.language.java.artifact.* import org.gradle.language.java.plugins.* import org.gradle.language.java.tasks.* import org.gradle.language.javascript.* import org.gradle.language.jvm.* import org.gradle.language.jvm.plugins.* import org.gradle.language.jvm.tasks.* import org.gradle.language.nativeplatform.* import org.gradle.language.nativeplatform.tasks.* import org.gradle.language.objectivec.* import org.gradle.language.objectivec.plugins.* import org.gradle.language.objectivec.tasks.* import org.gradle.language.objectivecpp.* import org.gradle.language.objectivecpp.plugins.* import org.gradle.language.objectivecpp.tasks.* import org.gradle.language.rc.* import org.gradle.language.rc.plugins.* import org.gradle.language.rc.tasks.* import org.gradle.language.routes.* import org.gradle.language.scala.* import org.gradle.language.scala.plugins.* import org.gradle.language.scala.tasks.* import org.gradle.language.scala.toolchain.*
    import org.gradle.language.twirl.* import org.gradle.maven.* import org.gradle.model.* import org.gradle.nativeplatform.* import org.gradle.nativeplatform.platform.* import org.gradle.nativeplatform.plugins.* import org.gradle.nativeplatform.tasks.* import org.gradle.nativeplatform.test.* import org.gradle.nativeplatform.test.cunit.* import org.gradle.nativeplatform.test.cunit.plugins.* import org.gradle.nativeplatform.test.cunit.tasks.* import org.gradle.nativeplatform.test.googletest.* import org.gradle.nativeplatform.test.googletest.plugins.* import org.gradle.nativeplatform.test.plugins.* import org.gradle.nativeplatform.test.tasks.* import org.gradle.nativeplatform.toolchain.* import org.gradle.nativeplatform.toolchain.plugins.* import org.gradle.platform.base.* import org.gradle.platform.base.binary import org.gradle.platform.base.component.* import org.gradle.platform.base.plugins.* import org.gradle.platform.base.test.* import org.gradle.play.* import org.gradle.play.distribution.* import org.gradle.play.platform.* import org.gradle.play.plugins.* import org.gradle.play.tasks.* import org.gradle.play.toolchain.* import org.gradle.plugin.use.* import org.gradle.plugins.ear.* import org.gradle.plugins.ear.descriptor.* import org.gradle.plugins.ide.api.* import org.gradle.plugins.ide.eclipse.* import org.gradle.plugins.ide.idea.* import org.gradle.plugins.javascript.base.* import org.gradle.plugins.javascript.coffeescript.* import org.gradle.plugins.javascript.envjs.* import org.gradle.plugins.javascript.envjs.browser.* import org.gradle.plugins.javascript.envjs.http.* import org.gradle.plugins.javascript.envjs.http.simple.*
    import org.gradle.plugins.javascript.jshint.* import org.gradle.plugins.javascript.rhino.* import org.gradle.plugins.javascript.rhino.worker.* import org.gradle.plugins.signing.* import org.gradle.plugins.signing.signatory.* import org.gradle.plugins.signing.signatory.pgp.* import org.gradle.plugins.signing.type.* import org.gradle.plugins.signing.type.pgp.* import org.gradle.process.* import org.gradle.sonar.runner.* import org.gradle.sonar.runner.plugins.* import org.gradle.sonar.runner.tasks.* import org.gradle.testing.jacoco.plugins.* import org.gradle.testing.jacoco.tasks.* import org.gradle.testkit.runner.* import org.gradle.util.*
    Gradle — Задачи
    Скрипт сборки Gradle описывает один или несколько проектов. Каждый проект состоит из разных задач. Задача — это часть работы, которую выполняет сборка. Задачей может быть компиляция некоторых классов, хранение файлов классов в отдельной целевой папке, создание
    JAR, генерация Javadoc или публикация некоторых достижений в репозитории.
    В этой главе объясняется, что такое задача, а также как ее создать и выполнить.
    Определение задач
    Задача — это ключевое слово, которое используется для определения задачи в сценарии сборки. Посмотрите на следующий пример, который представляет задачу с именем hello, которая печатает tutorialspoint . Скопируйте и сохраните следующий скрипт в файл с именем build.gradle . Этот сценарий сборки определяет имя задачи hello, которое используется для печати строки tutorialspoint. task hello { doLast { println 'tutorialspoint'
    }
    }
    Выполните следующую команду в командной строке. Он выполняет вышеуказанный скрипт. Вы должны выполнить это там, где хранится файл build.gradle.

    C:\> gradle –q hello
    Выход: tutorialspoint
    Вы можете упростить эту задачу приветствия, указав ярлык (представляет символ << ) для оператора doLast . Если вы добавите этот ярлык к вышеупомянутой задаче, привет, он будет выглядеть как следующий скрипт. task hello << { println 'tutorialspoint'
    }
    Вы можете выполнить приведенный выше скрипт с помощью команды gradle –q hello .
    Вот несколько вариантов определения задачи, посмотрите на нее. В следующем примере определяется задача hello .
    Скопируйте и сохраните следующий код в файл build.gradle . task (hello) << { println "tutorialspoint"
    }
    Выполните следующую команду в командной строке. Он выполняет приведенный выше скрипт. Вы должны выполнить это, где хранится файл build.gradle.
    C:\> gradle –q hello
    Выход: tutorialspoint
    Вы также можете использовать строки для имен задач. Взгляните на тот же самый привет пример. Здесь мы будем использовать String как задачу.
    Скопируйте и сохраните следующий код в файл build.gradle . task('hello') << { println "tutorialspoint"
    }
    Выполните следующую команду в командной строке. Он выполняет приведенный выше скрипт. Вы должны выполнить это, где хранится файл build.gradle.

    C:\> gradle –q hello
    Выход: tutorialspoint
    Вы также можете использовать альтернативный синтаксис для определения задачи. Это использует метод create () для определения задачи. Взгляните на тот же самый привет пример, приведенный ниже.
    Скопируйте и сохраните приведенный ниже код в файл build.gradle . tasks.create(name: 'hello') << { println "tutorialspoint"
    }
    Выполните следующую команду в командной строке. Он выполняет приведенный выше скрипт. Вы должны выполнить это, где хранится файл build.gradle.
    C:\> gradle –q hello
    Выход: tutorialspoint
    Поиск задач
    Если вы хотите найти задачи, которые вы определили в файле сборки, вам нужно использовать соответствующие стандартные свойства проекта. Это означает, что каждая задача доступна как свойство проекта, используя имя задачи в качестве имени свойства.
    Взгляните на следующий код, который обращается к задачам как к свойствам.
    Скопируйте и сохраните приведенный ниже код в файл build.gradle . task hello println hello.name println project.hello.name
    Выполните следующую команду в командной строке. Он выполняет приведенный выше скрипт. Вы должны выполнить это, где хранится файл build.gradle.
    C:\> gradle –q hello
    Выход:
    hello hello
    Вы также можете использовать все свойства через коллекцию задач.
    Скопируйте и сохраните следующий код в файл build.gradle . task hello println tasks.hello.name println tasks['hello'].name
    Выполните следующую команду в командной строке. Он выполняет приведенный выше скрипт. Вы должны выполнить это, где хранится файл build.gradle.
    C:\> gradle –q hello
    Выход: hello hello
    Вы также можете получить доступ к пути задачи, используя задачи. Для этого вы можете вызвать метод getByPath () с именем задачи, либо относительным путем, либо абсолютным путем.
    Скопируйте и сохраните приведенный ниже код в файл build.gradle . project(':projectA') { task hello
    } task hello println tasks.getByPath('hello').path println tasks.getByPath(':hello').path println tasks.getByPath('projectA:hello').path println tasks.getByPath(':projectA:hello').path
    Выполните следующую команду в командной строке. Он выполняет приведенный выше скрипт. Вы должны выполнить это, где хранится файл build.gradle.
    C:\> gradle –q hello
    Выход:
    :hello

    :hello
    :projectA:hello
    :projectA:hello
    Добавление зависимостей к задачам
    Вы можете сделать задачу зависимой от другой задачи, что означает, что когда одна задача выполнена, тогда запускается только другая задача. Каждое задание отличается от имени задания. Коллекция имен задач называется ее коллекцией задач. Чтобы сослаться на задачу в другом проекте, вы должны использовать путь к проекту в качестве префикса к соответствующему имени задачи.
    Следующий пример, который добавляет зависимость из taskX в taskY.
    Скопируйте и сохраните приведенный ниже код в файл build.gradle . Посмотрите на следующий код. task taskX << { println 'taskX'
    } task taskY(dependsOn: 'taskX') << { println "taskY"
    }
    Выполните следующую команду в командной строке. Он выполняет приведенный выше скрипт. Вы должны выполнить это, где хранится файл build.gradle .
    C:\> gradle –q taskY
    Выход: taskX taskY
    Приведенный выше пример добавляет зависимость от задачи, используя ее имена. Существует еще один способ достижения зависимости задачи, который заключается в определении зависимости с помощью объекта Task.
    Давайте возьмем тот же пример зависимости задачиY от задачи X, но мы используем объекты задачи вместо имен ссылок на задачи.
    Скопируйте и сохраните следующий код в файл build.gradle . task taskY << { println 'taskY'
    }
    task taskX << { println 'taskX'
    } taskY.dependsOn taskX
    Выполните следующую команду в командной строке. Вы должны выполнить это там, где хранится файл build.gradle.
    C:\> gradle –q taskY
    Выход: taskX taskY
    Приведенный выше пример добавляет зависимость от задачи, используя ее имена. Есть еще один способ достижения зависимости задачи — определить зависимость с помощью объекта Task.
    Здесь мы берем тот же пример, что taskY зависит от taskX, но мы используем объекты задачи вместо имен ссылок на задачи. Взгляните на это.
    Скопируйте и сохраните приведенный ниже код в файл build.gradle . Посмотрите на следующий код. task taskX << { println 'taskX'
    } taskX.dependsOn { tasks.findAll { task → task.name.startsWith('lib')
    }
    } task lib1 << { println 'lib1'
    } task lib2 << { println 'lib2'
    } task notALib << { println 'notALib'
    }
    Выполните следующую команду в командной строке. Он выполняет приведенный выше скрипт. Вы должны выполнить это, где хранится файл build.gradle .

    C:\> gradle –q taskX
    Выход: lib1 lib2 taskX
    Добавление описания к задаче
    Вы можете добавить описание к вашей задаче. Это описание отображается при выполнении задач Gradle . Это возможно с помощью ключевого слова description.
    Скопируйте и сохраните следующий код в файл build.gradle . Посмотрите на следующий код. task copy(type: Copy) { description 'Copies the resource directory to the target directory.' from 'resources' into 'target' include('**/*.txt', '**/*.xml', '**/*.properties') println("description applied")
    }
    Выполните следующую команду в командной строке. Вы должны выполнить это там, где хранится файл build.gradle.
    C:\> gradle –q copy
    Если команда выполнена успешно, вы получите следующий вывод. description applied
    Пропуск задач
    Пропуск задач может быть выполнен путем передачи предиката замыкания. Это возможно только в том случае, если метод задачи или замыкание генерируют исключение
    StopExecutionException до выполнения фактической работы задачи.
    Скопируйте и сохраните следующий код в файл build.gradle . task eclipse << { println 'Hello Eclipse'
    }

    // #1st approach - closure returning true, if the task should be executed, false if not. eclipse.onlyIf { project.hasProperty('usingEclipse')
    }
    // #2nd approach - alternatively throw an StopExecutionException() like this eclipse.doFirst { if(!usingEclipse) { throw new StopExecutionException()
    }
    }
    Выполните следующую команду в командной строке. Вы должны выполнить это там, где хранится файл build.gradle.
    C:\> gradle –q eclipse
    Структура задачи
    Gradle имеет разные фазы при работе с заданиями. Прежде всего, это фаза конфигурации, на которой выполняется код, который указывается непосредственно при закрытии задачи. Блок конфигурации выполняется для каждой доступной задачи, а не только для тех задач, которые впоследствии фактически выполняются.
    После фазы конфигурирования фаза выполнения запускает код внутри замыканий
    1   2   3   4   5   6   7   8   9   ...   16


    написать администратору сайта