2017-02-22 20 views
0

(Обратите внимание, что я новичок в Eclipse,/Gradle, поэтому, пожалуйста, медведь со мной.)Изменить build.gradle для местного задания Jar

Я пытаюсь изменить следующий проект, потому что есть настройки, я хотел бы сделать: https://github.com/Swagger2Markup/swagger2markup

в свою очередь, я хотел бы с использованием модифицированного бинарного в следующем проекте: https://github.com/Swagger2Markup/swagger2markup-gradle-project-template

в целом я считаю, что мне нужно сделать следующие шаги:

  1. Скачать исходный код для этого проекта и скомпилировать его в локальный файл .jar
  2. Измените «Шаблон проекта» build.gradle ссылаться местному .jar

Я думаю, что я получил шаг # 1 для работы импортируя проект Gradle в Eclipse, перейдя в Gradle Tasks, щелкнув правой кнопкой мыши «jar» и выполнив задачу. Генерируется Ajar.

После этого я загружаю проект шаблона и копирую сгенерированный .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.)

Независимо от того, что я делаю, проект шаблона, кажется, загружает удаленный (немодифицированный) двоичный файл.

Как заставить проект использовать локальный файл?

+0

Как ваши другие зависимости выглядит как? Возможно, он загружается как транзитивная зависимость. Попробуйте запустить «зависимостей градиента» и посмотрите, сможете ли вы проследить, откуда они взялись. – sm4

ответ

0

Проблема заключается в том, что зависимость также объявлена ​​в плагине, как вы можете увидеть здесь:

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

Это означает, что менеджер Dependency видит, что и загружает его. Во-первых, вы должны исключить его:

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" 
    } 
} 

EDIT: И вы должны использовать зависимость как buildscript зависимости, это означает, что она должна быть объявлена ​​внутри buildscript { dependencies { ... } } не только в dependencies { ... }

+0

Выглядит хорошо. Спасибо! – user7606813

Смежные вопросы