У меня есть ситуация, когда некоторые из моих кодов groovy ссылаются на мои java файлы, но у меня также есть разные java файлы, которые ссылаются на один и тот же код groovy. При попытке скомпилировать в maven мне нужно либо скомпилировать groovy до, либо после java, и это не будет работать, поскольку код groovy зависит от некоторых java файлов, а разные java файлы зависят от groovy код. Есть ли способ справиться с такой зависимостью?
Maven compile groovy
Ответ 1
Вы должны скомпилировать свой код, добавив плагин gmaven к вашему maven pom.xml. Он генерирует Java-заглушки вашего кода groovy, чтобы иметь дело с типом ссылки на язык, на который вы ссылаетесь. Я использую его совсем немного, и он работает очень хорошо.
Ответ 2
Да, просто используйте GMaven. Поскольку это совлокальный компилятор, он автоматически управляет вашей java с groovy и groovy на java-зависимостями.
Вкратце, вам нужно будет:
- укажите
gmaven-plugin
вpom.xml
; - держите свои классы groovy под
src/main/groovy
илиsrc/test/groovy
; - привязать плагин gmaven к соответствующим этапам жизненного цикла.
Подробнее см. здание groovy проектов.
Ответ 3
Вы можете разбить свой код слоями и иметь нижние слои, которые вызывают верхние уровни, но никогда наоборот. Например, в веб-приложении вы можете иметь уровень представления, уровень обслуживания и уровень сохранения. Уровень просмотра вызывает уровень обслуживания, а уровень обслуживания вызывает уровень сохранения, но уровень сохранения никогда не будет вызывать уровень обслуживания или уровень представления. Если вы хотите, чтобы groovy/java-код существовал на одном и том же слое, убедитесь, что вы вызываете другого, но оба они не звонят друг другу. Суть в том, что вам следует избегать двунаправленных зависимостей.