У меня есть проект A, в котором проект B указан как зависимость, но B не имеет зависимости A.
Если A зависит от B, то B не может зависеть от A.
Обратите внимание, что циклические c зависимости проблематичны c, даже если вы не используете Maven. Он ломается, когда вы начинаете использовать Java 8+ модулей тоже. И вы можете столкнуться с проблемами стабильности / конвергенции сборки без использования модулей.
Я хочу использовать классы из A внутри B без создания циклической c зависимости.
Переместите классы из B в A. (Не копируйте их. Вы не хотите, чтобы один и тот же класс находился в двух местах. Если полные имена разные, у вас есть дублированный код. Если они совпадают, вы можете также сталкивается с проблемами во время выполнения.)
В качестве альтернативы создайте третий проект C, содержащий классы, в которых A и B зависят от C.
В качестве альтернативы, объедините A и B в один проект.
В качестве альтернативы, рефакторинг самих классов; например, чтобы ввести интерфейсы или абстрактные классы в соответствующей точке, или переместить методы / функциональность вокруг.
Короче говоря, есть много способов избежать циклической c зависимости между проектами. Вам просто нужно проанализировать свой код, чтобы выработать наиболее подходящий способ (или способы) сделать это. Не существует магической c формулы / "наилучшей практики". Просто тяжелая работа.