Локальная система управления пакетами Java в стиле PIPON PIP?

Я хочу программировать на Java или других языках JVM, таких как Scala, Kotlin или Groovy. Когда я программирую свои проекты, я хочу иметь только инструкции импорта в исходных файлах Java / Scala / Kotlin без необходимости указывать пакеты во второй раз в скрипте сборки Gradle / Maven. Вместо этого я хочу работать так, как я бы сделал в Python, то есть иметь свои операторы импорта в начале моих исходных файлов, и я готов.

Затем пакеты должны автоматически включаться, когда я компилирую, если все пакеты установлены в центральной локальной системе управления пакетами или иным образом получают сообщение об ошибке, сообщающее мне, что мне нужно установить недостающий пакет. Он должен по существу работать так же, как для Python и PIP соответственно.

Является ли такой рабочий процесс предпочтительным с Groovy или Maven?

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

Ближе всего я могу подумать о Винограде :

Grape – это менеджер зависимостей JAR, встроенный в Groovy. Grape позволяет быстро добавлять зависимости репозитория maven к вашему пути к классам, что упрощает создание сценариев. Простейшее использование так же просто, как добавление аннотации к вашему скрипту:

@Grab(group='org.springframework', module='spring-orm', version='3.2.5.RELEASE') import org.springframework.jdbc.core.JdbcTemplate 

Как в этом примере :

 @Grab('net.sourceforge.nekohtml:nekohtml:1.9.16') def parser = new org.cyberneko.html.parsers.SAXParser() def page = new XmlParser(parser).parse('https://news.google.com/nwshp?hl=zh-TW&tab=wn') page.depthFirst().DIV.grep{ it.'@class'=='title' }.each { println it.A.SPAN.text() } 

Я не могу судить о ландшафте Groovy, так как у меня нет опыта, но для разработки приложений Java или Scala этот точный рабочий процесс невозможен, насколько мне известно.

Что касается «Я хочу иметь только инструкции импорта …» Я думаю, что самое близкое, что вы можете получить, это хорошая интеграция Maven / Gradle / sbt в среде IDE, например IntelliJ, которая автоматически добавляет нужную библиотеку в конфигурационный файл вашей сборки при использовании правильного ярлык. Он (по крайней мере) работает для некоторых библиотек Java, когда вы имеете дело с проектом Maven в IntelliJ.

И в отношении вашего другого желания автоматически включать пакеты при компиляции: на JVM существует концепция толстого JAR (также называемого uber JAR), который в основном представляет собой JAR (архив Java), который содержит все зависимости и, следовательно, является автономным , Обычно вы можете запустить приложение, содержащееся в нем, с помощью одной команды java .

Чтобы создать толстые JAR-ы, у вас должен быть плагин approriate для вашей системы сборки:

  • Для Maven, который будет плагин maven shade , см. https://maven.apache.org/plugins/maven-shade-plugin/
  • Для sbt вы можете использовать плагин сборки , см. https://github.com/sbt/sbt-assembly
  • У Gradle, вероятно, есть нечто похожее
  • Многие фреймворки Java также имеют свои собственные плагины сборки, которые делают создание таких автономных приложений относительно простыми ( Spring Boot – один из примеров, но подходит только для приложений, которые находятся поверх HTTP-сервера)

Надеюсь, это поможет, хотя это не точный ответ на ваш вопрос. 🙂