修改 build.gradle 引用本地jar

Posted

技术标签:

【中文标题】修改 build.gradle 引用本地jar【英文标题】:Modify build.gradle to reference local jar 【发布时间】:2017-07-13 03:04:32 【问题描述】:

(请注意,我是 Eclipse / Gradle 的新手,所以请多多包涵。)

我正在尝试修改以下项目,因为我想进行自定义:https://github.com/Swagger2Markup/swagger2markup

反过来,我想在以下项目中使用修改后的二进制文件:https://github.com/Swagger2Markup/swagger2markup-gradle-project-template

总的来说,我认为我需要执行以下步骤:

    下载该项目的源代码并将其编译为本地 .jar 文件 修改“模板工程”build.gradle 引用本地.jar

我想我通过将 Gradle 项目导入 Eclipse、转到 Gradle Tasks、右键单击“jar”并运行任务来完成第 1 步。生成一个 .jar。

之后,我下载了模板项目并将生成的 .jar 复制到模板项目的 libs 文件夹中。然后我修改build.gradle:

我在 buildscript > dependencies 下注释掉以下行

//classpath "io.github.swagger2markup:swagger2markup:1.0.1"

然后我将以下内容添加到每个 this post 的文件顶部:

apply plugin: 'java'

dependencies 
    runtime files('libs/swagger2markup-1.3.1-SNAPSHOT.jar')

(我也尝试使用compile 代替runtime,以及fileTree。)

无论我做什么,模板项目似乎都在下载远程(未修改的)二进制文件。

如何强制项目使用本地文件?

【问题讨论】:

您的其他依赖项如何?也许它被下载为传递依赖。尝试运行gradle dependencies,看看你是否可以追踪它来自哪里。 【参考方案1】:

问题在于插件中也声明了依赖项,如您在此处看到的:

https://github.com/Swagger2Markup/swagger2markup-gradle-plugin/blob/master/build.gradle

这意味着依赖管理器会看到并下载它。首先,你必须排除它:

classpath 'io.github.swagger2markup:swagger2markup-gradle-plugin:1.2.0', 
  exclude group: 'io.github.swagger2markup', module: 'swagger2markup-gradle-plugin'

io.github.swagger2markup:swagger2markup-import-files-ext 也是如此。然后你把 你的 库放在类路径上。所以

buildscript 
    repositories 
        jcenter()
        mavenCentral()
        maven  url 'http://oss.jfrog.org/artifactory/oss-snapshot-local/' 
        //mavenLocal()
    
    dependencies 
        classpath 'org.asciidoctor:asciidoctor-gradle-plugin:1.5.3'
        classpath 'org.asciidoctor:asciidoctorj-pdf:1.5.0-alpha.10.1'
        classpath 'io.github.swagger2markup:swagger2markup-gradle-plugin:1.2.0', 
          exclude group: 'io.github.swagger2markup', module: 'swagger2markup-gradle-plugin'
        
        classpath files('libs/swagger2markup-1.3.1-SNAPSHOT.jar')   // YOUR VERSION
        classpath "io.github.swagger2markup:swagger2markup-import-files-ext:1.2.0", 
          exclude group: 'io.github.swagger2markup', module: 'swagger2markup-gradle-plugin'
        
        classpath "com.bluepapa32:gradle-watch-plugin:0.1.5"
        classpath "org.kordamp.gradle:livereload-gradle-plugin:0.2.1"
    

编辑:并且您必须将依赖项用作 buildscript 依赖项,这意味着它必须在 buildscript dependencies ... 中声明,而不仅仅是在 dependencies ... 中声明

【讨论】:

以上是关于修改 build.gradle 引用本地jar的主要内容,如果未能解决你的问题,请参考以下文章

gradle使用本地jar包

android studio 为啥每次build gradle很慢

Android studio中2种build.gradle文件介绍

Android Studio 中的 Javadoc @link 引用到 build.gradle

取消远程依赖,用本地依赖

如何解析和修改build.gradle.kts Kotlin Gradle构建脚本?