Вопрос

Каковы наилучшие методы создания военных файлов (с использованием 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) и легко настраивается.

Домашняя страница 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>

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

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

<Ол>
  • Загрузите и установите Maven
  • Перейдите в командную строку и запустите: mvn архетип: создать
  • Следуйте предложенным шагам - выберите простой веб-проект Java (18) и подходящее имя.
  • Когда он закончится, запустите: mvn eclipse: eclipse
  • Запустите Eclipse. Выберите Файл - > Импорт - > Существующий проект. Выберите каталог, в котором вы выполняли mvn цели.
  • Вот и все, теперь у вас должно быть очень хорошее начало военного проекта в затмении
  • Вы можете создать саму войну, запустив 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.Альтернатива экспорта не очень удобна, поскольку вам придется каждый раз настраивать свойства экспорта.

    ШАГИ:

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

    2. Перейдите и создайте новый архив в верхнем каталоге «Архивы проекта».У вас есть только опция jar, но назовите свой архив *.war.

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

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

    5. Соберите архив вручную или опубликуйте непосредственно на сервере;но также автоматически создается для вас 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 из диспетчера задач:

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

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

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top