Как создать военные файлы

Каковы наилучшие методы создания военных файлов (с использованием eclipse) для запуска на tomcat? учебные пособия, ссылки, примеры высоко ценятся.

Ответ 1

Вы можете использовать Ant для настройки, компиляции, WAR, и разверните свое решение.

<target name="default" depends="setup,compile,buildwar,deploy"></target>

Затем вы можете выполнить один клик в Eclipse для запуска этой цели Ant. Ниже приведены примеры каждого из шагов:

Предпосылки

Предположим, что ваш код организован так:

  • ${basedir}/src: файлы Java, свойства, файлы конфигурации XML
  • ${basedir}/web: ваши файлы JSP
  • ${basedir}/web/lib: любые JAR файлы, необходимые во время выполнения
  • ${basedir}/web/META-INF: ваш манифест
  • ${basedir}/web/WEB-INF: ваши файлы в формате web.xml

Настройка

Определите задачу setup, которая создает каталог распространения и копирует любые артефакты, которые должны быть WARNING напрямую:

<target name="setup">
    <mkdir dir="dist" />
    <echo>Copying web into dist</echo>
    <copydir dest="dist/web" src="web" />
    <copydir dest="dist/web/WEB-INF/lib" src="${basedir}/../web/WEB-INF/lib" />
</target>

Compile

Создайте свои Java файлы в классах и скопируйте любые артефакты, отличные от Java, которые находятся в src, но должны быть доступны во время выполнения (например, свойства, файлы XML и т.д.):

<target name="compile">
    <delete dir="${dist.dir}/web/WEB-INF/classes" />
    <mkdir dir="${dist.dir}/web/WEB-INF/classes" />
    <javac destdir="${dist.dir}/web/WEB-INF/classes" srcdir="src">
        <classpath>
            <fileset dir="${basedir}/../web/WEB-INF/lib">
                  <include name="*" />
            </fileset>
        </classpath>
    </javac>
    <copy todir="${dist.dir}/web/WEB-INF/classes">
        <fileset dir="src">
            <include name="**/*.properties" />
            <include name="**/*.xml" />
        </fileset>
    </copy>
</target>

Построить WAR

Создайте собственную WAR:

<target name="buildwar">
    <war basedir="${basedir}/dist/web" destfile="My.war"
     webxml="${basedir}/dist/web/WEB-INF/web.xml">
        <exclude name="WEB-INF/**" />
        <webinf dir="${basedir}/dist/web/WEB-INF/">
            <include name="**/*.jar" />
        </webinf>
    </war>
</target>

Deploy

Наконец, вы можете настроить задачу для развертывания WAR непосредственно в месте развертывания Tomcat:

<target name="deploy">
    <copy file="My.war" todir="${tomcat.deploydir}" />
</target>

Нажмите и идите!

Как только все это настроено, просто запуск целевого объекта default из Eclipse будет компилироваться, WAR и развернуть ваше решение.

Преимущество такого подхода заключается в том, что он будет работать вне Eclipse, а также в Eclipse и может использоваться для простого совместного использования стратегии развертывания (например, с помощью управления источником) с другими разработчиками, которые также работают над вашим проектом.

Ответ 2

Я всегда выбирал Export из Eclipse. Он создает файл войны и включает в себя все необходимые файлы. Предоставление вам проекта в качестве веб-проекта, что все, что вам нужно будет сделать. Eclipse делает это очень просто.

Ответ 3

Мы используем Maven (Ant старший брат) для всех наших java-проектов, и у него очень отличный плагин WAR. Здесь можно найти учебники и использование.

Это намного проще, чем Ant, полностью совместимый с Eclipse (используйте maven eclipse: eclipse для создания проектов Eclipse) и легко настраивается.

Домашняя страница Maven

плагин Maven WAR

Пример конфигурации:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1-alpha-2</version>
    <configuration>
        <outputDirectory>${project.build.directory}/tmp/</outputDirectory>
        <workDirectory>${project.build.directory}/tmp/war/work</workDirectory>
        <webappDirectory>${project.build.webappDirectory}</webappDirectory>
        <cacheFile>${project.build.directory}/tmp/war/work/webapp-cache.xml</cacheFile>
        <nonFilteredFileExtensions>
            <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
            <nonFilteredFileExtension>png</nonFilteredFileExtension>
            <nonFilteredFileExtension>gif</nonFilteredFileExtension>
            <nonFilteredFileExtension>jsp</nonFilteredFileExtension>
        </nonFilteredFileExtensions>
        <webResources>
            <resource>
                <directory>src/main/webapp/</directory>
                <targetPath>WEB-INF</targetPath>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </webResources>
        <warName>Application</warName>
    </configuration>
</plugin>

Ответ 4

Файл войны - это просто файл jar с военным расширением, но то, что заставляет его работать, - это то, как содержимое на самом деле структурировано.

Учебник J2EE/Java EE может быть запущен:

http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WebComponents3.html

И спецификация Servlet содержит детали gory:

http://java.sun.com/products/servlet/download.html

Если вы создаете новый веб-проект в Eclipse (я имею в виду версию Java EE), структура создается для вас, и вы также можете указать, где установлен ваш Сервер приложений, и он будет развертывать и запускать приложение для вас.

Использование опции "Экспорт- > WAR файл" позволит вам сохранить военный файл.

Ответ 5

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

Следуя приведенным ниже шагам, вы можете получить новую настройку военного проекта в Eclipse.

  • Загрузите и установите Maven
  • Пройдите в командной строке: mvn archetype:generate
  • Следуйте подсказкам: выберите простой веб-проект java (18) и подходящее имя.
  • Когда он закончен, запустите: mvn eclipse:eclipse
  • Запустите Eclipse. Выберите Файл → Импорт → Существующий проект. Выберите каталог, в котором вы запустили цели mvn.
  • Чтобы у вас теперь было очень хорошее начало военного проекта в eclipse
  • Вы можете сами создать войну, запустив mvn package или развернув ее, настроив сервер в eclipse и просто добавив добавление проекта на сервер.

Как утверждают некоторые другие, недостатком использования maven является то, что вы должны использовать соглашения maven. Но я думаю, что если вы только начинаете, изучение конвенций - хорошая идея, прежде чем вы начнете создавать свои собственные. Там ничего не мешает вам изменить/рефакторинг на свой предпочтительный метод в более позднем пункте.

Надеюсь, что это поможет.

Ответ 7

Использовать код сборки ant Я использую это для своего проекта SMS

<property name="WEB-INF" value="${basedir}/WebRoot/WEB-INF" />
<property name="OUT" value="${basedir}/out" />
<property name="WAR_FILE_NAME" value="mywebapplication.war" />
<property name="TEMP" value="${basedir}/temp" />

<target name="help">
    <echo>
        --------------------------------------------------
        compile - Compile
        archive - Generate WAR file
        --------------------------------------------------
    </echo>
</target>

<target name="init">
    <delete dir="${WEB-INF}/classes" />
    <mkdir dir="${WEB-INF}/classes" />
</target>

<target name="compile" depends="init">
    <javac srcdir="${basedir}/src" 
                destdir="${WEB-INF}/classes" 
                classpathref="libs">
    </javac>
</target>

<target name="archive" depends="compile">
    <delete dir="${OUT}" />
    <mkdir dir="${OUT}" />
    <delete dir="${TEMP}" />
    <mkdir dir="${TEMP}" />
    <copy todir="${TEMP}" >
        <fileset dir="${basedir}/WebRoot">
        </fileset>
    </copy>
    <move file="${TEMP}/log4j.properties" 
                    todir="${TEMP}/WEB-INF/classes" />
    <war destfile="${OUT}/${WAR_FILE_NAME}" 
                    basedir="${TEMP}" 
                    compress="true" 
                    webxml="${TEMP}/WEB-INF/web.xml" />
    <delete dir="${TEMP}" />
</target>

<path id="libs">
    <fileset includes="*.jar" dir="${WEB-INF}/lib" />
</path>

Ответ 8

Другой вариант - создать его автоматически с помощью Eclipse. Конечно, если у вас есть непрерывная среда интеграции Ant или рекомендуется Maven. Альтернатива экспорта не очень удобна, потому что вы должны каждый раз настраивать свойства экспорта.

ШАГОВ:

  • Включить поддержку "Архивов проектов"; это может зависеть от вашего проекта (я использовал его в проекте Java EE/Web). Щелкните правой кнопкой мыши корневой каталог проекта; Настроить → Добавить поддержку архивов проектов.

  • Зайдите и создайте новый архив в главном каталоге Project Archives. У вас есть только опция jar, но имя вы архивируете *.war.

  • Настройте набор файлов, то есть какие файлы будут включены. Типичным является настройка двух наборов файлов аналогично тому, как конфигурируется сборка веб-развертывания (свойство проекта).

    • copy/WebContent в /
    • copy/build/classes для WEB-INF/classes (создайте этот набор файлов после определения каталога WEB-INF/classes в архиве)
  • Вам может потребоваться tweek свойство exclude для файлов, в зависимости от того, где вы разместили некоторые файлы конфигурации, или вам может потребоваться больше наборов файлов, но идея в том, что после того, как вы настроили это, вам не нужно его менять.

  • Создайте архив вручную или опубликуйте непосредственно на сервере; но также автоматически создается для вас Eclipse

Ответ 9

Другим распространенным вариантом является gradle.

http://www.gradle.org/docs/current/userguide/application_plugin.html

Чтобы создать свой военный файл в веб-приложении:

В build.gradle добавьте:

apply plugin: 'war'

Тогда:

./gradlew war

Используйте макет из принятого ответа выше.

Ответ 10

Упрощенное решение, которое также обновляет рабочее пространство Eclipse:

<?xml version="1.0" encoding="UTF-8"?>
<project name="project" default="default">    
    <target name="default">
        <war destfile="target/MyApplication.war" webxml="web/WEB-INF/web.xml">
            <fileset dir="src/main/java" />
            <fileset dir="web/WEB-INF/views" />
            <lib dir="web/WEB-INF/lib"/>
            <classes dir="target/classes" />
        </war>
        <eclipse.refreshLocal resource="MyApplication/target" depth="infinite"/>
    </target>
</project>

Ответ 11

Упрощенный код оболочки для создания файлов WAR из стандартного динамического веб-проекта Eclipse. Использует файловую систему RAM (/dev/shm) на платформе Linux.

#!/bin/sh

UTILITY=$(basename $0)

if [ -z "$1" ] ; then
    echo "usage: $UTILITY [-s] <web-app-directory>..."
    echo "       -s ..... With source"
    exit 1
fi

if [ "$1" == "-s" ] ; then
    WITH_SOURCE=1
    shift
fi

while [ ! -z "$1" ] ; do
    WEB_APP_DIR=$1

    shift

    if [ ! -d $WEB_APP_DIR ] ; then
        echo "\"$WEB_APP_DIR\" is not a directory"
        continue
    fi

    if [ ! -d $WEB_APP_DIR/WebContent ] ; then
        echo "\"$WEB_APP_DIR\" is not a Web Application directory"
        continue
    fi

    TMP_DIR=/dev/shm/${WEB_APP_DIR}.$$.tmp
    WAR_FILE=/dev/shm/${WEB_APP_DIR}.war

    mkdir $TMP_DIR

    pushd $WEB_APP_DIR > /dev/null
    cp -r WebContent/* $TMP_DIR
    cp -r build/* $TMP_DIR/WEB-INF
    [ ! -z "$WITH_SOURCE" ] && cp -r src/* $TMP_DIR/WEB-INF/classes
    cd $TMP_DIR > /dev/null
    [ -e $WAR_FILE ] && rm -f $WAR_FILE
    jar cf $WAR_FILE .
    ls -lsF $WAR_FILE
    popd > /dev/null

    rm -rf $TMP_DIR
done

Ответ 12

Используйте эту команду вне папки WEB-INF. Это должно создать ваш военный файл. Это самый быстрый метод, который я знаю.

Вам понадобится JDK 1.7+ для достижения этих перемен и переменных среды, которые указывают на каталог bin вашего JDK.

jar -cvf projectname.war *

Ссылка Ссылка

Ответ 13

** Создание файла войны в Eclips Gaynemed из веб-проекта grails **

1.Импорт проекта:

2. Измените файл datasource.groovy

Вот так: url = "jdbc: postgresql://18.247.120.101: 8432/PGMS"

2.chnge AppConfig.xml

3.kill Java из диспетчера задач:

  1. запустить чистую команду в затмениях

  2. Запустите 'prod war', в котором будет указано название проекта.

  3. Проверьте файл журнала и найдите тот же .war файл в каталоге Workbench с той же датой.