Как создать военные файлы
Вопрос
Каковы наилучшие методы создания военных файлов (с использованием eclipse) для запуска на Tomcat?учебные пособия, ссылки и примеры высоко ценятся.
Решение
Вы можете использовать Муравей настроить, скомпилировать, ВОЙНА, и разверните свое решение.
<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
задача, которая создает каталог распространения и копирует любые артефакты, которые необходимо напрямую отправить в WARred:
<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>
Скомпилировать
Создавайте свои файлы 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>
Построить ВОЙНУ
Создайте саму ВОЙНУ:
<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>
Развертывать
Наконец, вы можете настроить задачу для развертывания WAR непосредственно в месте развертывания Tomcat:
<target name="deploy">
<copy file="My.war" todir="${tomcat.deploydir}" />
</target>
Нажмите и вперед!
После того, как все это настроено, просто запустите default
target из Eclipse скомпилирует, WAR и развернет ваше решение.
Преимущество этого подхода заключается в том, что он будет работать как вне Eclipse, так и внутри Eclipse, и его можно использовать для простого обмена вашей стратегией развертывания (например,через систему контроля версий) с другими разработчиками, которые также работают над вашим проектом.
Другие советы
Я всегда только выбирал Экспорт из Eclipse. Он создает файл войны и включает в себя все необходимые файлы. Если вы создали проект как веб-проект, это все, что вам нужно сделать. Затмение делает это очень просто.
Мы используем 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>
Файл war - это просто файл jar с расширением war, но он работает так, как на самом деле структурировано содержимое.
Учебник по J2EE / Java EE может быть началом:
http://java.sun.com/j2ee/ учебник / 1_3-FCS / DOC / WebComponents3.html р>
И спецификация сервлета содержит ужасные детали:
Если вы не знаете, что делать и начинаете с нуля, Maven может помочь вам начать работу.
Следуя приведенным ниже инструкциям, вы можете идеально настроить новый военный проект в Eclipse.
<Ол> mvn архетип: создать
mvn eclipse: eclipse
mvn package
или развернув ее, настроив сервер в eclipse и просто добавив добавление проекта на сервер. Как говорили некоторые другие недостатки использования maven, вы должны использовать соглашения maven. Но я думаю, что если вы только начинаете, изучение соглашений является хорошей идеей, прежде чем вы начнете делать свои собственные. Там нет ничего, чтобы помешать вам изменить / рефакторинг на ваш собственный предпочтительный метод на более позднем этапе.
Надеюсь, это поможет.
Используйте задачу Ant 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>
Другой вариант — создать его автоматически с помощью Eclipse.Конечно, если у вас есть среда непрерывной интеграции, рекомендуется использовать Ant или Maven.Альтернатива экспорта не очень удобна, поскольку вам придется каждый раз настраивать свойства экспорта.
ШАГИ:
Включить поддержку «Архивов проекта»;это может зависеть от вашего проекта (я использовал его в проекте Java EE/Web).Щелкните правой кнопкой мыши корневой каталог проекта;Настроить -> Добавить поддержку архивов проекта.
Перейдите и создайте новый архив в верхнем каталоге «Архивы проекта».У вас есть только опция jar, но назовите свой архив *.war.
Настройте Fileset-ы, т.е. какие файлы следует включить.Обычно два набора файлов настраиваются аналогично настройке сборки веб-развертывания (свойство проекта).
- скопировать /WebContent в /
- скопируйте /build/classes в WEB-INF/classes (создайте этот набор файлов после определения каталога WEB-INF/classes в архиве)
Возможно, вам придется настроить свойство исключения набора файлов в зависимости от того, где вы разместили некоторые файлы конфигурации, или вам может потребоваться больше наборов файлов, но идея состоит в том, что после того, как вы это настроили, вам не нужно его менять.
Соберите архив вручную или опубликуйте непосредственно на сервере;но также автоматически создается для вас Eclipse
Другой распространенный вариант — gradle.
http://www.gradle.org/docs/current/userguide/application_plugin.html
Чтобы создать свой военный файл в веб-приложении:
В build.gradle добавьте:
apply plugin: 'war'
Затем:
./gradlew war
Используйте макет из принятого ответа выше.
Используйте эту команду вне папки WEB-INF. Это должно создать ваш военный файл. Это самый быстрый метод, который я знаю. Р>
Вам потребуется установить JDK 1.7+ для достижения этого навыка и переменных среды, которые указывают на каталог bin вашего JDK.
jar -cvf projectname.war *
Более простое решение, которое также обновляет рабочее пространство 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>
Упрощенный код оболочки для создания файлов WAR из стандартного динамического веб-проекта Eclipse. Использует файловую систему RAM (/ dev / shm) на платформе Linux.
#!/bin/sh
UTILITY=$(basename <*>)
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
** Создание военного файла в веб-проекте Eclips Gaynemed of Grails **
1.Импортный проект:
2.Измените файл datasource.groovy
Например: url = " jdbc: postgresql: //18.247.120.101: 8432 / PGMS "
2.chnge AppConfig.xml
3. убить Java из диспетчера задач:
-
запускать чистую команду в eclips
-
запустите 'prod war', соответствующую имени проекта.
-
Проверьте файл журнала и найдите тот же файл .war в каталоге рабочей среды с той же датой.
Ол>