Фактически jar-библиотека – это просто zip архив, что напрямую следует из его имени: J ava Ar chive . Чаще всего он содержит просто четыре вещи:
- скомпилированные классы;
- ресурсы: properties-файлы и тому подобное;
- манифест MANIFEST.MF;
- другие jar-библиотеки (редко).
Типичная структура такого архива имеет вид:
META-INF/ MANIFEST.MF com/ javarush/ MyApplication.class application.properties
Теперь давай рассмотрим типичный war-файл. Кстати, war не от слова война, а от W eb Ar chive . Структура war-файла обычно посложнее. Чаще всего он состоит из двух частей:
- Java-часть
- скомпилированные классы
- ресурсы для java-классов: properties-файлы и тому подобное
- другие jar-библиотеки (часто)
- манифест MANIFEST.MF
- web-xml – дескриптор развертывания веб-сервиса
- jsp-сервелеты
- статические веб-ресурсы: HTML, CSS, JS-файлы
Пример типичного war-файла:
Банят ли за Spacewar в Steam? Что такое Spacewar?
META-INF/ MANIFEST.MF WEB-INF/ web.xml jsp/ helloWorld.jsp classes/ static/ templates/ application.properties lib/ // *.jar files as libs
Важно! jar-файл может запустить просто java-машина, для запуска же war-файла его нужно загрузить на веб-сервер. Самостоятельно он не запускается.
Плагин создания war-файла с помощью maven-war-plugin
Давайте представим, что у нас есть простой веб-проект. Пусть проект задается такой структурой файлов, как нам его собрать?
|— pom.xml `— src `— main |— java | `— com | `— example | `— projects | `— SampleAction.java |— resources | `— images | `— sampleimage.jpg `— webapp |— WEB-INF | `— web.xml |— index.jsp `— jsp `— websource.jsp
Во-первых, нам нужно указать Maven, собрать все это в виде war-файла , для этого есть тег , пример:
. com.example.projects simple-war war 1.0-SNAPSHOT Simple War Project http://javarush.com .
Во-вторых, нам нужно подключить плагин maven-war-plugin . Пример:
org.apache.maven.plugins maven-war-plugin 3.3.2 /sample/servlet/container/deploy/directory
Тут мы просто задаем плагин, который в будущем можно конфигурировать. Также с помощью тега webappDirectory переопределяем директорию, в которую будет развернут проект. Сейчас расскажу подробнее, о чем идет речь.
Плагину можно задать два режима сборки (два вида goal):
В первом случает итоговый war-файл просто кладется в папку target и имеет имя -.war .
Но можно “попросить” плагин, чтобы в итоговую папку содержимое war-файла было помещено в том состоянии, в котором оно будет распаковано веб-сервером у себя внутри. Для этого используется goal war:exploded .
Второй подход используется часто, если ты запускаешь или дебажишь проект прямо из Intellij IDEA.
Кстати, тег webappDirectory в примере выше позволяет переопределить директорию куда будет распакован ваш war-файл при сборке в режиме war:exploded.
О других настройках плагина вы можете узнать из его официальной странички.
Как получить легально золотые орлы за 3 мин 100 орлов(не кликбейт)
Сборка web-приложения на основе SpringBoot
Ну и хотелось бы разобрать какой-нибудь реальный пример сборки. Давай не мелочиться и рассмотрим это на примере приложения на основе SpringBoot.
Шаг первый. Создай пустой Maven web-проект с помощью IDEA.
Шаг второй. Добавь в его pom.xml зависимости от Spring.
org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat provided
Шаг третий. Создай класс com.javarush.spring.MainController . Его нужно разместить в папке src/main/java :
В-третьих, метод возвращает строку «index» . Это говорит фреймворку SpringBoot, что в качестве ответа нужно отдать содержимое файла index.html .
Шаг четвертый. Нужно добавить в проект файл index.html с таким содержимым:
Это не просто html. Перед тем, как его содержимое отдадут клиенту, оно будет модифицировано на сервере фреймворком Thymeleaf. В этот файл встроены специальные теги, которые позволяют библиотеке Thymeleaf обрабатывать и модифицировать содержимое страницы.
Красным отображены теги, которые будут обработаны библиотекой Thymeleaf, зеленым – стили CSS-библиотеки Bootstrap.
Шаг пятый. Задаем плагин в pom.xml:
maven-war-plugin 3.3.1
Немного переоценил свои силы. Чтобы полностью разобрать простой пример, нужно много времени. Но ты можешь скачать полный код проекта из GitHub и попробовать разобраться в нем самостоятельно. Кстати, процентов 80% своего рабочего времени ты будешь делать именно это 🙂
Полный код ты можешь скачать по ссылке в GitHub.
Источник: javarush.com
Советы по открытию файла WAR
Не удается открыть файл WAR? Ты не единственный. Тысячи пользователей ежедневно сталкиваются с подобными проблемами. Ниже вы найдете советы по открытию файлов WAR, а также список программ, поддерживающих файлы WAR.
WAR расширение файла
Java Web Archive |
Oracle |
Сжатые файлы |
Файл WAR поддерживается в операционных системах 3. В зависимости от вашей операционной системы вам может потребоваться другое программное обеспечение для обработки файлов WAR. Ниже приводится сводка количества программ, которые поддерживают и открывают файл WAR на каждой системной платформе.
Операционные системы
3
1
1
Что такое файл WAR?
Файл WAR отнесен к категории Сжатые файлы.