Построить плагин gradle - PullRequest
       18

Построить плагин gradle

0 голосов
/ 26 мая 2018

Я разрабатываю плагин Gradle вместе с проектом:

plugin_consumer
  |
  + build.gradle
  + src/

plugin
  |
  + build.gradle 
  + libs/
  + src/

Все банки перемещаются в plugin/libs после сборки, а модуль plugin consumer использует плагин так:

buildscript {
  repositories {
  // ...
  }
  dependencies {
    classpath fileTree(dir:'../plugin/libs', include: ['*.jar'])
  }
} 

apply plugin: 'my.custom.plugin'

Я тестировал, и эта установка работала нормально, однако плагин .jar собирается без зависимостей, и как только я добавляю некоторые зависимости в проект, потребительский скрипт сборки начинает падать из-за исключений NoClassDefFoundError.Проблема заключается в том, что вместо создания сценария fat jar сценарий больше не находит плагин:

// from plugin/build.gradle 
// Configurations to build jar with dependencies
configurations {
  jar.archiveName = 'plugin.jar'
}
jar {
  archiveName = 'plugin.jar'
  baseName = project.name + '-all'
  from { configurations.compile.collect {
    println it
    it.isDirectory() ? it : zipTree(it)
  } }
}

Выполнение команд на plugin_consumer Ошибка выброса проекта:

> Failed to apply plugin [id 'my.custom.plugin']
   > Plugin with id 'my.custom.plugin' not found.

1 Ответ

0 голосов
/ 26 мая 2018

Я не определил проблему, но нашел решение.Каким-то образом инструкция jar для упаковки всех исходных файлов испортила файл jar плагина.Следующие конфигурации работали на стороне плагина:

//...
jar {
  from {
    configurations.compileWithDependencies.collect { it.isDirectory() ? it : zipTree(it) }
  }
}

configurations {
  compileWithDependencies
}

dependencies {
  compile gradleApi()
  compileWithDependencies 'my.dependency1'
  compileWithDependencies 'my.dependency1'
  testCompile 'test.dependency'

  configurations.compile.extendsFrom(configurations.compileWithDependencies)
}

Судя по всему, я бы предположил, что gradleApi() зависимости не должны компилироваться в jar плагина.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...