当前位置: 首页 > 知识库问答 >
问题:

Gradle:如何获取存储在中的特定外部依赖项的路径。格拉德尔?

王建华
2023-03-14

我对格拉德尔是个新手。对于OpenAPI生成器repo,我利用了非常方便的gradle插件,几乎完全实现了我想要的功能(在我的OpenAPI.json规范中生成HTML2静态文档),只是有一个旧的错误,该文档没有正确填充。有一个PR请求已经有好几个月没有被触及了,它基本上解决了这个问题,所以我用这些更改构建了一个定制的jar。

我想创建一个新的gradle任务,将这个自定义外部jar作为可执行文件运行,这样我就可以基本上做与他们的等级插件相同的功能。通过这样做,我将其添加到maven存储库中,并将其作为依赖项下拉:

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

然后将jar拉入我的External Libraries目录,该目录存储在缓存中的一个非常特定的位置(ref:Gradle:External dependencies存储在哪里?)

我怎样才能知道这个罐子的确切位置?还有其他更适合最佳实践的方法吗?

共有1个答案

尉迟鸿熙
2023-03-14

听起来你要走一条更难的路来留档。如果您发现的问题仅与模板有关,您可以在Gradle任务中指定templateDir,并指向保存自定义目录的目录。

例如:

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来构建它。

如果您希望修复的问题在管理生成器的Java代码中有一些逻辑,那么您可以创建一个自定义生成器jar并加载它,而无需修改gradle插件本身。

我实际上有一个HTML2生成器的样本回购,它正是这样做的。我的示例只更改了生成器名称,并将Google Analytics(分析)添加为配置选项和模板,但应该很容易遵循。看https://github.com/jimschubert/custom-generator-example

关键部分是将您的自定义生成器jar添加到构建脚本依赖项中,如下所示(取自我的回购示例):

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()
}
 类似资料:
  • 我有一个名为.jar的罐子,它依赖于我的外部库。 执行会得到以下输出, 我尝试用两种方式运行jar 并为DependedClass获得了NoClassDefFoundError 按如下所示更改清单条目后 清单-版本:1.0 创建-由:1.6.0_05(Sun Microsystems Inc.) 主-类:com.os.hw.helloworld 类-路径:c://users/vinay/deskt

  • 问题内容: 假设我想在项目中添加guice-assistedinject作为依赖项。它将guice工件指定为依赖项本身。如何告诉它使用guice的no_aop版本? 我知道我可以执行以下操作,但是我可以一步完成而不排除guice模块吗? 问题答案: 没有更简单的解决方案。您可以使用简短的依赖性表示法(例如)来缩短代码。

  • 像这样的问题有很多,但是似乎没有一个对我有效或者直接回答我的问题。 我正在使用Jhipster和MongoDB Atlas。Jhipster使用一个名为Mongobee的库,其中使用了一个适用于MongoDB的方法,但不适用于MongoDB Atlas。要启动,Mongobee似乎不再维护。 因此,我找到了某人的建议PR,他们将其发送给Mongobee进行审查,我接受了代码更改,将MongoBe分

  • 我熟悉使用make构建大型应用程序,但现在我已经开始使用Android Studio,我想了解如何在Makefile中完成我已经做过的事情。 下面是一个可能有助于您确定答案的示例: Makefile示例:(极简主义) 更简单的例子: 在Gradle怎么做? 我想解决上面示例中提到的外部依赖关系。实际上,我是通过“make”来实现的,但我想完全删除这个额外的步骤。

  • 我正在为我的项目使用Gradle,昨天我在构建项目时遇到了问题,因为https://plugins.gradle.org不起作用。那么有没有办法克隆依赖项

  • 我想使用nd4j-cuda-10.2中的项目。它有两个操作系统(Linux和Windows)的jar文件。在使用windows系统时,如何将jar从Linux中排除,反之亦然?。 [Maven Repository][1][1]:https://repo1.maven.org/maven2/org/nd4j/nd4j-cuda-10.2/1.0.0-beta7/ 由于jar文件的重量。我想排除对每