Skip to content

1.1. maven jar и war

Если в каталоге target у вас появился файл ejb-example-1.0-SNAPSHOT.jar вместо .war, это может быть связано с тем, что Maven по умолчанию создает JAR-файлы для проектов, которые не имеют конфигурации для создания WAR-файлов. Чтобы исправить это, вам нужно убедиться, что вы правильно указали тип упаковки в вашем pom.xml.

Исправление pom.xml

Убедитесь, что в вашем pom.xml указано следующее:

<packaging>war</packaging>

Вот полный пример pom.xml, который должен работать для вашего проекта:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>ejb-example</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>8.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.1</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Шаги для сборки проекта

  1. Убедитесь, что вы сохранили изменения в pom.xml.
  2. Выполните команду для очистки и сборки проекта:

bash mvn clean package

  1. После успешной сборки в каталоге target должен появиться файл ejb-example-1.0-SNAPSHOT.war.

Развертывание на Tomcat

Теперь вы можете скопировать этот .war файл в каталог webapps вашего Tomcat и запустить сервер, как описано ранее.

Если у вас все еще возникают проблемы, пожалуйста, дайте знать, и я помогу вам разобраться!

В Maven проектах war и jar представляют собой разные типы артефактов, которые используются для различных целей.

  1. JAR (Java ARchive):
  2. Это архивный файл, который содержит скомпилированные Java классы и связанные с ними ресурсы (например, изображения, конфигурационные файлы и т.д.).
  3. JAR файлы обычно используются для библиотек и модулей, которые могут быть подключены к другим Java приложениям.
  4. JAR файлы не содержат информации о веб-контейнерах и не могут быть развернуты на серверах приложений без дополнительной конфигурации.

  5. WAR (Web Application Archive):

  6. Это специальный тип JAR файла, который предназначен для развертывания веб-приложений.
  7. WAR файлы содержат не только скомпилированные Java классы, но и веб-ресурсы, такие как HTML, JSP, CSS, JavaScript, а также файл WEB-INF, который содержит конфигурационные файлы и библиотеки, необходимые для работы веб-приложения.
  8. WAR файлы могут быть развернуты на серверах приложений, таких как Apache Tomcat, JBoss и других.

Как это меняется

При изменении типа проекта с jar на war или наоборот, необходимо учитывать следующие моменты:

  • Структура проекта: Для WAR проекта структура каталогов будет включать папку src/main/webapp, где будут храниться веб-ресурсы. В JAR проекте такой папки не будет.

  • POM файл: В pom.xml необходимо изменить элемент <packaging>:

  • Для JAR: <packaging>jar</packaging>
  • Для WAR: <packaging>war</packaging>

  • Зависимости: В WAR проекте могут быть дополнительные зависимости, связанные с веб-технологиями (например, сервлеты, JSP и т.д.), которые могут не понадобиться в JAR проекте.

  • Конфигурация сервера: Для WAR проекта может потребоваться дополнительная конфигурация сервера приложений, чтобы правильно развернуть и запустить веб-приложение.

Таким образом, выбор между JAR и WAR зависит от того, что вы разрабатываете: библиотеку или веб-приложение.