Плагины в мультипроекте терпят неудачу в Grails 3.2.11

конфигурация

После раздела " Плагины и мультипроектные сборки" в руководстве по Grails 3.2.11 предполагается, что я могу настроить мультипроект с помощью следующих команд в терминале:

echo "Creating the root folder..."
mkdir test-multi-project
cd test-multi-project

echo "Creating the settings.gradle file..."
echo "include 'myapp', 'myplugin'" >> settings.gradle

echo "Creating the Grails application..."
grails create-app myapp

echo "Creating the Grails plugin..."
grails create-plugin myplugin

echo "Configuring the dependency between the application and the plugin..."
echo "grails { plugins { compile project(':myplugin') } }" >> myapp/build.gradle 

echo "Executing the Grails application..."
cd myapp
grails run-app 

ошибка

Однако, когда я попробовал эти команды для создания и настройки приложения Grails и плагина, grails run-app Команда выдает следующую ошибку:

FAILURE: Build failed with an exception.

* Where:
Build file '~/test-multi-project/myapp/build.gradle' line: 61

* What went wrong:
A problem occurred evaluating root project 'myapp'.
> Project with path ':myplugin' could not be found in root project 'myapp'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

CONFIGURE FAILED

Total time: 4.835 secs
| Error Error initializing classpath: Project with path ':myplugin' could not be found in root project 'myapp'. (Use --stacktrace to see the full trace)

Дополнительная информация

Я уже тестировал вышеупомянутые команды, используя Grails 3.2.8, 3.2.9, 3.2.10 и 3.2.11, и код выдает ту же ошибку.

С другой стороны, я тестировал вышеупомянутые команды, используя Grails 3.2.3, 3.2.5 и 3.2.7, и проект выполняется нормально. Кроме того, целевая страница Grails показывает, что приложение использовало mypluin.

Обратите внимание, я использую SDK для обработки версий Grails. Команды были выполнены с использованием Java 1.7 и Yosemite:

  • Groovy: 2.4.7
  • Ant: Apache Ant (TM) версии 1.9.6, скомпилирован 29 июня 2015 г.
  • JVM: 1.7.0_141 (Azul Systems, Inc. 24.141-b11)
  • ОС: Mac OS X 10.10.5 x86_64

Вопрос:

Мне интересно, что еще мне нужно сделать или что я делаю неправильно, чтобы этот код работал на Grails 3.2.11

Заранее спасибо.

2 ответа

Решение

Джефф Браун исправил вышеуказанную проблему, удалив multi-project-test2/myapp/settings.gradle файл и добавление следующей строки в multi-project-test2/settings.gradle файл:

project(':myapp').name = 'myapp'

Как вы можете увидеть на следующем коммите GitHub: https://github.com/esalomon/multi-project-test2/commit/d92c3fbc67156bcd1af9f47dc6f2984534154bad

После обновления выше можно загрузить multi-project-test2, и он будет работать нормально.

Вероятно, что-то пошло не так:

echo "grails { plugins { compile project(':myplugin') } }" >> myapp/build.gradle 

Этот сегмент должен быть добавлен к существующему блоку этого файла, а не к новому блоку (не то, что я тестировал)

Что происходит, когда вы выполняете шаги вручную? работает ли он таким образом, и если да, то задумывались ли вы о проведении различий между файлами, которые меняются, чтобы увидеть, что отличается.

Вы предоставляете сценарий, который великолепен, и, возможно, кто-то еще хочет пробежаться по нему, но я подозреваю, что это то, на что уже было указано.

Вы должны посмотреть в ed Примерно так:

Я использую приложение Grails 3.2.8, которое в сегменте зависимостей заканчивается так:

   runtime "com.h2database:h2"
    testCompile "org.grails:grails-plugin-testing"
    testCompile "org.grails.plugins:geb"
    testRuntime "org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1"
    testRuntime "net.sourceforge.htmlunit:htmlunit:2.18"

Теперь, если я выполню

test328$ ed -s build.gradle <<EOF >/dev/null
g/^    testRuntime "net.sourceforge.htmlunit:htmlunit:2.18"
a
compile project(':myplugin') 
.
w
q
EOF

Теперь вы можете увидеть:

tail -n20 build.gradle 
    runtime "com.h2database:h2"
    testCompile "org.grails:grails-plugin-testing"
    testCompile "org.grails.plugins:geb"
    testRuntime "org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1"
    testRuntime "net.sourceforge.htmlunit:htmlunit:2.18"
compile project(':myplugin') 
}

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

Сценарий ed был использован для демонстрации этого, так как, очевидно, это было недостаточно ясно ранее

Другие вопросы по тегам