Как получить текущие зависимости в скрипте Grails 3.2

Контекст

Я создал сценарий Grails 3.2.11 с помощью следующей команды:

grails create-script script-test

Приведенная выше команда создала файл: script-test.groovy.

Затем мне нужно проверить, присутствует ли зависимость файла jar в текущем проекте Grails.

В Grails 2.4 это можно было сделать с помощью вызова grailsSettings.runtimeDependencies:

def verifyJarDependency(String dependencyName) {

    //Gets all Grails Application dependencies.
    def dependenciesInstance = grailsSettings.runtimeDependencies

    //Defines the result variable
    def result = false

    //Adds references to all classes used in Grails Application.
    dependenciesInstance?.each { dependencyFile ->

        //Gets the file name
        String fileName = dependencyFile.name

        //Verifies if the actual file contains the Dependency file string
        if (fileName.contains(dependencyName)) {

            //There is a Jar file with the Dependency string.
            println "The Dependency file found is: $dependencyFile"
            result = true
        }
    }

    //If there is no Dependency jar file it returns false.
    return result
}

Например, если вы выполняете следующий фрагмент кода внутри файла сценария Grails 2.4:

target(buildPlugin: "Retrieves all the jar files which this instance is using") {

    //Gets all Grails Application dependencies.
    def dependenciesInstance = grailsSettings.runtimeDependencies

    dependenciesInstance?.each { dependencyFile ->

        //There is a Jar file with the Dependency string.
        println dependencyFile
    }
}

setDefaultTarget(buildPlugin)

Вы получите следующий вывод:

/home/username/.sdkman/candidates/grails/2.4.3/lib/org.grails/grails-datastore-simple/jars/grails-datastore-simple-3.1.2.RELEASE.jar
/home/username/.sdkman/candidates/grails/2.4.3/lib/org.grails/grails-datastore-gorm/jars/grails-datastore-gorm-3.1.2.RELEASE.jar
/home/username/.sdkman/candidates/grails/2.4.3/dist/grails-plugin-converters-2.4.3.jar
/home/username/.sdkman/candidates/grails/2.4.3/dist/grails-plugin-mimetypes-2.4.3.jar
/home/username/.sdkman/candidates/grails/2.4.3/lib/com.h2database/h2/jars/h2-1.3.176.jar
/home/username/.sdkman/candidates/grails/2.4.3/lib/log4j/log4j/jars/log4j-1.2.17.jar
/home/username/.sdkman/candidates/grails/2.4.3/dist/grails-resources-2.4.3.jar

Эта информация позже будет использована Proguard для запутывания jar-файла.

Вопрос

Как я могу получить текущие зависимости проекта Grails 3.2 внутри пользовательского скрипта?


person esalomon    schedule 29.09.2017    source источник


Ответы (1)


Вы можете выполнить «зависимости градиента» в пользовательском скрипте:

description "Project dependencies", "grails list-dependencies"
println gradle.dependencies()

и анализировать вывод

person Evgeny Smirnov    schedule 12.10.2017
comment
Прежде всего, спасибо за ваш ответ. Об этом, это способ, которым вы можете вызвать любую задачу Gradle внутри файла сценария Grails, но он дает вам только имена зависимостей без имен файлов. Возможно, мой вопрос нуждается в уточнении, потому что мне нужно имя файла jars и его пути. Потому что эта информация будет использоваться другим скриптом, который использует Proguard для запутывания файла jar. Я обновил вопрос, чтобы показать, какая информация мне нужна. - person esalomon; 13.10.2017
comment
В этом случае вы можете сканировать рабочий каталог grails.util.BuildSettings.TARGET_DIR на наличие файла .war и сканировать его на наличие всех jar-файлов. - person Evgeny Smirnov; 13.10.2017