Gradle: Как я могу получить путь к указанной c внешней зависимости, хранящейся в .gradle? - PullRequest
1 голос
/ 28 февраля 2020

Я совсем новичок в обучении. Для репозитория Генератор OpenAPI я воспользовался очень удобным плагином gradle, чтобы делать почти точно то, что я хочу (генерировать документы HTML2 stati c на моем openapi. json spe c) , за исключением того, что есть старая ошибка, в результате которой c не заполняется правильно. Был PR-запрос, который не затрагивался в течение многих месяцев и который в основном устраняет проблему, поэтому я создал пользовательский jar с изменениями.

Я хочу создать новое задание gradle, которое запускает этот пользовательский внешний jar как исполняемый файл, так что я могу по существу сделать ту же функциональность, что и их плагин класса. Сделав это, я добавил его в репозиторий maven и вытащил его как зависимость:

dependencies {
    compile 'org.openapitools:openapi-generator-custom-cli:3.0.0'
}

Затем он перетаскивает jar в каталог внешних библиотек, который хранится в очень конкретном c месте. в кеше (ref: Gradle: где хранятся внешние зависимости? )

Как узнать точное местоположение этой банки? Есть ли другой подход, который может показаться более эффективным?

1 Ответ

0 голосов
/ 09 марта 2020

Звучит так, как будто вы идете по более сложному маршруту, чтобы получить собственную документацию на месте. Если вы обнаружили проблему только с шаблоном, вы можете указать templateDir в своей задаче Gradle и указать каталог, содержащий ваш пользовательский каталог.

Например:

buildscript {
    repositories {
        mavenLocal()
        maven { url "https://repo1.maven.org/maven2" }
        maven {
            url "https://plugins.gradle.org/m2/"
        }
        maven {
            url "https://oss.sonatype.org/content/repositories/releases/"
        }
    }
    dependencies {
        classpath "org.openapitools:openapi-generator-gradle-plugin:4.2.3"
    }
}

apply plugin: 'org.openapi.generator'

task buildGoSdk(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask){
    generatorName = "go"
    templateDir = "$rootDir/custom-templates".toString()
    inputSpec = "$rootDir/petstore-v3.0.yaml".toString()
    additionalProperties = [
            packageName: "petstore"
    ]
    outputDir = "$buildDir/go".toString()
    configOptions = [
            dateLibrary: "threetenp"
    ]
}

Затем вы можете построить это с помощью gradle buildGoSdk.

Если проблема, которую вы хотите решить, имеет лог c в коде Java, который управляет генератором, вы можете создать нестандартный генератор jar и загрузите его без изменения самого плагина gradle.

На самом деле у меня есть пример репозитория для генератора HTML2, который делает именно это. Мой пример только меняет имя генератора и добавляет Google Analytics в качестве параметра конфигурации и к шаблону, но это должно быть достаточно просто для сопровождения. См. https://github.com/jimschubert/custom-generator-example

Ключевая часть заключается в том, чтобы добавить пользовательский jar-генератор к зависимостям buildscript, как показано ниже (взято из моего репозитория):

buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
    }
    dependencies {
        classpath "us.jimschubert.examples:html-generator:1.0-SNAPSHOT"
        classpath "org.openapitools:openapi-generator-gradle-plugin:3.3.3"
    }
}

apply plugin: 'org.openapi.generator'

task buildCustomHtml2(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask){
    generatorName = "custom-html2"
    inputSpec = "$rootDir/petstore-v3.0.yaml".toString()
    additionalProperties = [
            appName: "My Custom HTML2 Generator",
            googleAnalytics: "12345-6"
    ]
    outputDir = "$buildDir/custom-html".toString()
}
...