关于Java:修改build.gradle以引用本地jar

Modify build.gradle to reference local jar

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

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

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

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

  • 下载该项目的源并将其编译为本地.jar文件
  • 修改"模板项目" build.gradle以引用本地.jar
  • 我认为通过将Gradle项目导入Eclipse,转到Gradle Tasks,右键单击" jar"并运行任务,可以迈出第一步。生成一个.jar。

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

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

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

    然后,在每篇文章的文件顶部添加以下内容:

    1
    2
    3
    4
    5
    apply plugin: 'java'

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

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

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

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


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

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

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

    1
    2
    3
    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相同。 然后,将您的库放在类路径中。 所以

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    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 { ... }中声明