Які найкращі практики створення військових файлів (за допомогою eclipse) для запуску на tomcat? навчальні посібники, посилання, приклади високо цінуються.
Які найкращі практики створення військових файлів (за допомогою eclipse) для запуску на tomcat? навчальні посібники, посилання, приклади високо цінуються.
Відповіді:
Ви можете використовувати 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
завдання, яке створює каталог розповсюдження та копіює будь-які артефакти, які потрібно безпосередньо захищати:
<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
цілі з Eclipse скомпілює, WAR і розгорне ваше рішення.
Перевага такого підходу полягає в тому, що він буде працювати як поза Eclipse, так і в межах 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>
Файл війни - це просто файл jar з військовим розширенням, але що змушує його працювати - це те, як фактично структурований вміст.
Підручник з J2EE / Java EE може бути початком:
http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WebComponents3.html
А специфікація сервлету містить подробиці:
http://java.sun.com/products/servlet/download.html
Якщо ви створюєте новий веб-проект в Eclipse (я маю на увазі версію Java EE), структура створена для вас, і ви також можете сказати їй, де встановлений ваш сервер додатків, і він розгорне і запустить програму для вас.
Використання опції "Експорт-> WAR-файл" дозволить вам зберегти військовий файл.
Якщо ви не впевнені, що робити, і починаєте з нуля, тоді Maven може допомогти вам розпочати роботу.
Виконуючи наведені нижче кроки, ви зможете отримати нове налаштування військового проекту ідеально в затемненні.
mvn archetype:generate
mvn eclipse:eclipse
mvn package
або розгорнувши її, налаштувавши сервер в eclipse і просто додавши додавання проекту на сервер.Як сказали деякі інші, недоліком використання maven є те, що ви повинні використовувати конвенції maven. Але я думаю, що якщо ви тільки починаєте, вивчення конвенцій є гарною ідеєю перед тим, як почати створювати власні. Ніщо не завадить вам змінити / переробити на ваш власний бажаний метод пізніше.
Сподіваюся, це допомагає.
Використовуйте завдання « Мурашник війни»
Використовуйте код побудови мурашок. Я використовую це для мого 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 / веб-проекті). Клацніть правою кнопкою миші кореневий каталог проекту; Налаштування -> Додати підтримку архівів проектів.
Перейдіть і створіть новий архів у верхній директорії "Архіви проектів". У вас є лише варіант jar, але ім'я ви архівуєте * .war.
Налаштуйте набори файлів, тобто які файли будуть включені. Типовим є налаштування двох наборів файлів, подібних до того, як налаштовано Web Deployment Assembly (властивість проекту).
Можливо, вам доведеться налаштувати властивість виключення набору файлів залежно від того, де ви розмістили деякі конфігураційні файли, або вам може знадобитися більше наборів файлів, але ідея полягає в тому, що після налаштування цього вам не потрібно його змінювати.
Створюйте архів вручну або публікуйте безпосередньо на сервері; але також автоматично будується для вас 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 $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
** Створення файлу війни у веб-проекті Eclips Gaynemed of grails **
1. Імпорт проекту:
2. Змініть файл datasource.groovy
Ось так: url = "jdbc: postgresql: //18.247.120.101: 8432 / PGMS"
2.chnge AppConfig.xml
3. вбити Java з диспетчера завдань:
запустіть чисту команду в затемненнях
запустити "prod war" за допомогою назви проекту.
Перевірте файл журналу та знайдіть той самий файл .war у каталозі робочого середовища з тією ж датою.