Каковы наилучшие методы создания военных файлов (с использованием 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) и легко настраивается.
Пример конфигурации:
<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. Но я думаю, что если вы только начинаете, изучение конвенций - хорошая идея, прежде чем вы начнете создавать свои собственные. Там ничего не мешает вам изменить/рефакторинг на свой предпочтительный метод в более позднем пункте.
Надеюсь, что это поможет.
Ответ 6
Используйте Ant военная задача
Ответ 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 из диспетчера задач:
-
запустить чистую команду в затмениях
-
Запустите 'prod war', в котором будет указано название проекта.
-
Проверьте файл журнала и найдите тот же .war файл в каталоге Workbench с той же датой.