Я пишу много плагинов для сервера minecraft bukkit, и я устал копировать + вставлять одни и те же служебные классы в свои проекты снова и снова. Я решил просто поместить их все в отдельный проект и добавить в свои плагины через maven. Я использую IntelliJ Ultimate.
Я хочу иметь проект maven, который содержит все мои служебные классы, называемые, например. UtilityAPI. Затем я хочу иметь возможность создать еще один проект, который будет моим плагином bukkit. В этом втором проекте я хочу иметь возможность использовать весь код из первого. Кроме того, мне бы очень хотелось, чтобы, если я решу создать jar-плагин, maven автоматически учитывает самый последний код из моего API-проекта.
Я начал работать над этим и начал читать о модулях maven и о том, как их можно использовать для создания разных проектов вместе. Сначала я подумал, что это как раз то, что мне нужно, и попытался просто добавить
<modules>
<module>UtilityAPI</module>
</modules>
Однако это приводит к тому, что мой проект плагина bukkit считается родительским проектом и отказывается собираться в jar, а просто в (по крайней мере, для меня) довольно бесполезном .pom файле. Я не уверен, что делать дальше. Должен ли я создавать «родительский» проект для моего проекта плагина bukkit, который содержит API и проект плагина в качестве модулей? И если да, то как сгенерировать .jar, а не .pom?
Решением мечты было бы иметь проект UtilityAPI и иметь возможность включать его в любые новые плагины, которые я мог бы написать в будущем. Я также был бы поклонником простого способа создать банку с новейшими исходными кодами моего плагина. Возможно ли это, и если да, то как?
В вашем многомодульном проекте Maven ваш плагин должен быть другим модулем (а не родительским, который имеет тип упаковки pom). Тогда этот модуль будет иметь зависимость от модуля API (возможны зависимости между модулями).
Однако многомодульные проекты обычно предназначены для тесно связанных проектов. Это не похоже на ваш сценарий. Похоже, что плагины не имеют (потенциально) ничего общего, кроме зависимости от проекта API. Возможно, было бы лучше иметь проект API как отдельный автономный проект Maven, а затем развернуть его версии моментальных снимков (или install их только в вашем локальном репозитории Maven) и использовать их в своих проектах плагинов.
@monamona, если вы занимаетесь только локальной разработкой, то, похоже, вы можете одновременно открывать несколько проектов Maven в IntelliJ, и (согласно ответам) IntelliJ создает проекты без необходимости создавать проекты вручную, см. stackoverflow .com/questions/8774024/…; однако я не тестировал его. Хотя, когда вы хотите создать файл .jar, вам, вероятно, все равно придется запускать команды Maven вручную.
Хм, хорошо, я так и сделаю. Есть ли способ сообщить intellij, что я хочу сначала установить новейшую версию моего API-проекта, а затем создать свой настоящий плагин?