Не удалось получить неизвестное свойство 'ab c' для проекта root - PullRequest
2 голосов
/ 20 марта 2020

Я получил некоторый исходный код, и меня попросили его собрать. Это был проект Gradle. Поэтому я перешел в каталог проекта и запустил:

$ gradle clean assemble

, и появилась следующая ошибка:

...
* What went wrong:
A problem occurred evaluating root project 'pcase'.
> Could not get unknown property 'postgresql.jdbc' for root project 'pcase' of type org.gradle.api.Project.
...

В папке проекта также есть файл settings.gradle. Он содержит:

rootProject.name = 'pcase'

Я посмотрел на build.gradle и обнаружил множество случаев, таких как

${project['x']}

Например:

buildscript {
  dependencies {
    ...
    // FlywayDB, JOOQ.
    classpath "org.postgresql:postgresql:${project['postgresql.jdbc']}"
    classpath "org.flywaydb:flyway-gradle-plugin:${project['flywaydb.plugin.version']}"
    classpath "nu.studer:gradle-jooq-plugin:${project['jooq.plugin.version']}"
    ...

Что может быть ${project['x']}? Выглядит как ассоциативный массив в bash, и скрипт сборки пытается получить значение ключа 'x'.

Но я не нашел места в коде, где этот массив будет объявлен и инициализирован.

Вопрос в том, является ли проект готовым или лучше проконсультироваться с компанией, которая работала над ним до меня?

1 Ответ

1 голос
/ 20 марта 2020

Из предоставленной информации, проект в некоторой степени расширяется. Прежде всего, project['a.b.c'] - это синтаксис Groovy для доступа к свойствам из объекта project. Они упоминаются как свойства проекта .

Они могут быть установлены через

  1. Свойства проекта через командную строку: gradle -Ppostgresql.jdbc=x.y.z
  2. Системные свойства через командную строку: gradle -Dorg.gradle.project.postgresql.jdbc=x.y.z
  3. Системные свойства через gradle.properties: org.gradle.project.postgresql.jdbc=x.y.z

Все 3 свойства (postgresql.jdbc, flywaydb.plugin.version, jooq.plugin.version) обозначают номера версий определенных зависимостей сценария сборки. Однако, какие версии лучше всего использовать, я не знаю. Я бы, конечно, проконсультировался на соответствующих веб-сайтах проекта, Поиск артефактов Maven или просто спросил бы компанию.

  • org. postgresql: postgresql - это драйвер базы данных JDB C и, безусловно, зависит от версии базы данных.
  • org.flywaydb: flyway-gradle-plugin предназначен для миграции базы данных. Попробуйте использовать последнюю версию.
  • Мне не удалось найти gradle-jooq-plugin на Maven central. Скорее всего, он доступен на портале Gradle Plugin .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...