Как указать относительный путь к конфигурации checkstyle в корневом проекте в gradle 2.2+

у меня есть следующая структура проекта:

project
  checkstyle
    checkstyle.xml
  subproject1
    ...
  subproject2
    ...
  build.gradle

моя конфигурация для checkstyle в build.gradle следующим образом:

allprojects {
  apply plugin: 'checkstyle'
  checkstyle {
    configFile = 'checkstyle/checkstyle.xml' as File
  }
}

когда я использовал gradle 2.1, сборка работала нормально. После обновления до 2.2 или 2.2.1 возникает ошибка:

:subproject1:checkstyleMain FAILED
FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':subproject1:checkstyleMain'.
> Unable to create a Checker: unable to find /home/my/project/subproject1/checkstyle/checkstyle.xml

Gradle теперь ищет ' checkstyle / checkstyle.xml ' в каталоге подпроекта, что не то, что я ожидал бы.

я нашел это они упомянули об этом изменении в выпуске 2.2 Примечания. Но они не говорили, как сохранить прежнее поведение при решении этого пути. Как это сделать?

Я попытался с помощью project.file но это тоже не сработает.

3 ответов


в свой фрагмент

allprojects {
  apply plugin: 'checkstyle'
  checkstyle {
    configFile = 'checkstyle/checkstyle.xml' as File
  }
}

вы настраиваете файл конфигурации для каждого проекта как относительный от подпроекта, который вы в настоящее время настраиваете. вы можете исправить это, заменив

checkstyle {
    configFile = 'checkstyle/checkstyle.xml' as File
}

by

checkstyle {
    configFile = rootProject.file('checkstyle/checkstyle.xml')
}

не могли бы вы попробовать заменить:

configFile = 'checkstyle/checkstyle.xml' as File

С:

configFile = ('checkstyle/checkstyle.xml' as File).absolutePath as File

и попробуйте, если это сработает?

как уже упоминалось здесь configFile заменяется config. Не могу попробовать, но может быть:

config = 'checkstyle/checkstyle.xml' as File

будет работать?


есть гораздо более простой способ сделать это. Попробуйте gradle-estilo-plugin. Он позаботится о создании всех конфигурационных файлов (checkstyle.xml, импорт-контроль.xml, подавление.xml и заголовок.формат txt.) Все, что вам нужно сделать, это использовать плагин в файле сборки gradle. Если вам нужны какие-либо пользовательские правила, вы можете добавить их непосредственно в задачу gradle.

вот что вам нужно, чтобы начать работу:

buildscript {
  repositories {
    mavenCentral()
  }

  dependencies {
    classpath 'net.anshulverma.gradle:gradle-estilo-plugin:0.4.8'
  }
}

apply plugin: 'net.anshulverma.gradle.estilo'

estilo {
  source 'sun'
}

после этого вы можете изменить проверки, добавить подавления, редактировать импортируйте элемент управления и добавьте файл заголовка непосредственно из estilo { } блок. Подробности о том, как это сделать, и подробности, включая советы, можно найти в README.