修改build.gradle以引用本地jar

时间:2017-02-22 20:54:32

标签: java eclipse gradle build.gradle

(请注意,我是Eclipse / Gradle的新手,所以请耐心等待。)

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

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

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

  1. 下载该项目的源代码并将其编译为本地.jar文件
  2. 修改“template project”build.gradle以引用本地.jar
  3. 我认为通过将Gradle项目导入Eclipse,转到Gradle Tasks,右键单击“jar”并运行任务,我得到了第1步。生成.jar。

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

    我在buildscript>下注释掉以下行。依赖

    //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。)

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

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

1 个答案:

答案 0 :(得分:0)

问题是依赖项也在插件中声明,如下所示:

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 { ... }