Плагины в мультипроекте терпят неудачу в 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 был использован для демонстрации этого, так как, очевидно, это было недостаточно ясно ранее