Cómo crear archivos war
¿Cuáles son las mejores prácticas para crear archivos war (usando eclipse) para que se ejecuten en tomcat? tutoriales, enlaces, ejemplos son muy apreciados.
13 answers
Puede usar Ant para configurar, compilar, WAR e implementar su solución.
<target name="default" depends="setup,compile,buildwar,deploy"></target>
Luego puede ejecutar un clic en Eclipse para ejecutar ese objetivo Ant. Aquí hay ejemplos de cada uno de los pasos:
Condiciones previas
Asumiremos que tienes tu código organizado como:{[18]]}
-
${basedir}/src
: Archivos Java, propiedades, archivos de configuración XML -
${basedir}/web
: Sus archivos JSP -
${basedir}/web/lib
: Cualquier JARs requerido en tiempo de ejecución -
${basedir}/web/META-INF
: Su manifiesto -
${basedir}/web/WEB-INF
: Tu web.archivos xml
Configurar
Defina una tarea setup
que cree el directorio de distribución y copie cualquier artefacto que necesite ser combatido directamente:
<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>
Compilar
Construya sus archivos Java en clases y copie sobre cualquier artefacto no Java que resida bajo src
pero que necesite estar disponible en tiempo de ejecución (por ejemplo, propiedades, archivos XML, etc.).):
<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>
Construir LA GUERRA
Crear la GUERRA sí:
<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>
Desplegar
Finalmente, puedes configurar una tarea para desplegar the WAR directamente en tu ubicación de despliegue de Tomcat:
<target name="deploy">
<copy file="My.war" todir="${tomcat.deploydir}" />
</target>
Haga clic y listo!
Una vez configurado todo esto, simplemente lanzando el objetivo default
desde Eclipse compilará, combatirá e implementará su solución.
La ventaja de este enfoque es que funcionará tanto fuera de Eclipse como dentro de Eclipse y se puede usar para compartir fácilmente su estrategia de implementación (por ejemplo, a través del control de código fuente) con otros desarrolladores que también están trabajando en su proyecto.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-20 00:40:49
Siempre he seleccionado Exportar desde Eclipse. Construye el archivo war e incluye todos los archivos necesarios. Siempre que hayas creado el proyecto como un proyecto web, eso es todo lo que necesitas hacer. Eclipse hace que sea muy fácil de hacer.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-16 14:12:03
Usamos Maven (el hermano mayor de Ant) para todos nuestros proyectos Java, y tiene un plugin de GUERRA muy ingenioso. Los tutoriales y el uso se pueden encontrar allí.
Es mucho más fácil que Ant, totalmente compatible con Eclipse (use maven eclipse:eclipse para crear proyectos de Eclipse) y fácil de configurar.
Ejemplo de configuración:
<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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-22 10:55:36
Un archivo war es simplemente un archivo jar con una extensión war, pero lo que lo hace funcionar es cómo se estructura realmente el contenido.
El tutorial J2EE / Java EE puede ser un comienzo:
Http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WebComponents3.html
Y la especificación Servlet contiene los detalles sangrientos:
Http://java.sun.com/products/servlet/download.html
Si crea un nuevo proyecto web en Eclipse (me refiero al Java EE versión), la estructura se crea para usted y también puede indicarle dónde está instalado su Appserver y se implementará e iniciará la aplicación por usted.
El uso de la opción "Exportar->Archivo WAR" le permitirá guardar el archivo war.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-16 14:39:22
Si no está seguro de qué hacer y está comenzando desde cero, Maven puede ayudarlo a comenzar.
Siguiendo los pasos a continuación, puede obtener una nueva configuración de proyecto de guerra perfectamente en eclipse.
- Descargar e instalar Maven
- Ir a la línea de comandos ejecutar:
mvn archetype:generate
- Siga los pasos solicitados: elija el simple java web project (18) y un nombre adecuado.
- Cuando se termina ejecutar:
mvn eclipse:eclipse
- Iniciar Eclipse. Elija Archivo - > Importar - >Proyecto existente. Seleccione el directorio donde ejecutó los objetivos mvn.
- Eso es todo ahora deberías tener un muy buen comienzo para un proyecto de guerra en eclipse
- Puede crear la guerra en sí ejecutando
mvn package
o implementarla configurando un servidor en eclipse y simplemente agregando agregar el proyecto al servidor.
Como algunos otros han dicho, la desventaja de usar maven es que tienes que usar las convenciones maven. Pero creo que si usted está empezando, el aprendizaje de la convenciones es una buena idea antes de empezar a hacer su propia. No hay nada que te impida cambiar / refactorizar a tu propio método preferido en un momento posterior.
Espero que esto ayude.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-28 15:51:46
Usa la tarea Ant war
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-20 00:41:15
Utilice el código de compilación ant Yo uso esto para mi proyecto 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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-12 05:56:21
Otra opción sería construirlo automáticamente usando Eclipse. Por supuesto, si tiene un entorno de integración continua, se recomienda Ant o Maven. La alternativa de exportación no es muy conveniente porque tiene que configurar cada vez que las propiedades de exportación.
PASOS:
Habilite el soporte para "Archivos de proyecto"; esto podría depender de su proyecto (lo usé en Java EE/Web project). Haga clic derecho en el directorio raíz del proyecto; Configure - > Add Project Archives Apoyo.
Vaya y cree un nuevo archivo en el directorio superior" Archivos del proyecto". Solo tiene la opción jar, pero el nombre que archive*.guerra.
-
Configure Fileset-s, es decir, qué archivos se incluirán. Lo típico es configurar dos conjuntos de archivos de forma similar a cómo se configura el Ensamblaje de implementación web (propiedad del proyecto).
- copiar / contenido web a /
- copie/build / classes a WEB-INF/classes (cree este conjunto de archivos después de definir el directorio WEB-INF/classes en el archivo)
Es posible que necesite tweek la propiedad fileset exclude dependiendo de dónde colocó algunos de los archivos de configuración o puede que necesite más conjuntos de archivos, pero la idea es que una vez que haya configurado esto no necesita cambiarlo.
-
Compile el archivo manualmente o publique directamente en el servidor; pero también se compila automáticamente para usted por Eclipse
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-30 07:00:07
Otra opción común es gradle.
Http://www.gradle.org/docs/current/userguide/application_plugin.html
Para construir su archivo war en una aplicación web:
En construcción.gradle, añadir:
apply plugin: 'war'
Entonces:
./gradlew war
Utilice el diseño de la respuesta aceptada anterior.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-27 19:34:31
Solución más sencilla que también actualiza el espacio de trabajo de 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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-28 17:40:32
Código de shell simplista para crear archivos WAR a partir de un proyecto web dinámico Eclipse estándar. Utiliza el sistema de archivos RAM (/dev / shm) en una plataforma 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-19 21:06:47
Utilice este comando fuera de la carpeta WEB-INF. Esto debería crear tu archivo war. Este es el método más rápido que conozco.
Necesitará JDK 1.7+ instalado para lograr esta hazaña y las variables de entorno que apuntan al directorio bin de su JDK.
jar -cvf projectname.war *
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-13 09:46:58
* * Haciendo archivo War en Eclips Gaynemed of grails web project * *
1.Proyecto de importación:
2.Cambie el origen de datos.groovy file
Así:url="jdbc: postgresql://18.247.120.101: 8432 / PGMS"
2.chnge AppConfig.xml
3.matar a Java desde el Administrador de tareas:
-
Ejecutar comando limpio en eclips
Ejecutar 'prod war' seguido por el nombre del proyecto.
Compruebe el archivo de registro y encuentre el mismo .archivo war en el directorio de banco de trabajo con la misma fecha.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-30 07:09:24