Какой лучший, более простой и современный способ создания Java Web Applications по сравнению с Maven?

Я собираюсь избавиться от Maven. Это хорошо для простых приложений, но я сталкиваюсь с проблемами, которые я не могу решить, никто другой, похоже, не может их решить, и даже в списке рассылки Maven нет решения.

Каковы некоторые современные инструменты для сборки Java, которые предоставляют то, что предоставляет Maven, но также оснащены возможностями решения современных веб-приложений? Например, если я хочу использовать инструмент миниатюры Javascript, такой как компрессор YUI, он легко и без усилий позволит мне сжать/скомпилировать мои css и javascript непосредственно перед созданием файла War.

  • Объяснение. Проблема с maven заключается в том, что нет никакого способа делать вещи внутри плагина войны. Например, я хочу вызвать компрессор yui сразу после его копирования через ресурсы webapp (css, images, javascripts и т.д.). Если бы я мог это сделать, это обеспечило бы, что любые несжатые файлы javascript (которые были исключены в процессе миниатюризации/агрегации компрессора YUI) были частью окончательного пакета войны. Это невозможно

    Компрессор YUI работает только в том случае, если вы планируете сжатие и/или объединение всех ваших файлов в отличие от подмножества. Существуют файлы javascript, такие как jscharts.js, где вам нужно исключить их из процесса мини-обработки, потому что они в противном случае испортили фактический исходный код. В Maven нет возможности справиться с этим прецедентом, хотя решение прост.

Наличие возможности использовать живой javascript против сжатого/агрегированного javascript также будет большим благом.

  • Объяснение. Также сложно реорганизовать ваш массивный javascript, содержащийся в ваших html файлах. Скажем, у вас есть 100 файлов javascript, и вы хотите использовать свои файлы javascript для разработки, но вы хотите использовать сжатые/агрегированные для производства. Вам все равно необходимо включить все файлы javascript в ваши html-шаблоны (например, freemarker), потому что вы хотите иметь дело с живыми во время разработки. Для производства вам также необходимо сохранить отдельный список в maven pom.xml, чтобы их заполнить.

    Оба этих списка файлов javascript в основном идентичны, и для разработчика требуется дополнительное бремя для обеспечения того, чтобы они включали одни и те же файлы и в одном порядке:( Maven не помогает в такой общей проблеме, связанной с веб-сайтом, для в 2011 году. Люди Rails 3.1, хотя и получают это бесплатно. Мы можем сделать лучше.

Мне по-прежнему нужна возможность иметь фильтры, как и в maven, для обработки различных производственных сред. Например, я часто использую файлы свойств для изменения значений в applicationContext.xml для Spring или в контексте сервлета.

Мне также нужна возможность добавлять ресурсы в classpath. У меня есть эти массивные текстовые файлы, которые предоставляют мне базовые функции словаря, тезауруса и т.д. Мне нужно поместить их в свой путь к классам.

Было бы здорово, если бы инструмент сборки также использовал репозитории Maven.

Любые другие преимущества, такие как более простота и отсутствие кода конфигурации, будут плюсом, но функции, перечисленные выше, имеют первостепенное значение.

Спасибо.

Ответ 1

Вы должны иметь возможность сделать все это в Gradle. По сути, это набор библиотек и модулей в Groovy, которые дают вам много возможностей для сборки сборки. Если вам нужно его расширить, вы будете писать расширение в Groovy. Это довольно приятно.

Ответ 2

Если вы изучаете Scala, я настоятельно рекомендую SBT. Мы используем его для создания всего нашего Java-кода и были в восторге от него. Он выполняет аккуратные вещи, такие как параллельные сборки, и в отличие от ANT/Maven его инкрементная компиляция фактически работает на швы. Также он включает в себя хороший REPL, который позволяет вам напрямую взаимодействовать со сборкой и вашим кодом.

SBT легко расширяется, поскольку файлы сборки написаны в коде, а не в XML. Поэтому плагины существуют для всего, что может пожелать ваше сердце, например:

В зависимости от зависимостей проекта они могут быть как управляемыми (загружаемыми автоматически с Maven/Ivy), либо неуправляемыми (то есть ресурсами (jar's, files,...) you добавьте себя) - они также могут быть смешаны и сопоставлены.

SBT использует стандартный макет каталога Maven (хотя его можно легко изменить), имеет большую поддержку для IDE (fx. Eclipse и Idea), и он также может создавать pom, если вы этого хотите.

Существует очень хорошее руководство для быстрого начала работы с SBT здесь