문제

Tomcat에서 실행하기 위해 전쟁 파일 (Eclipse 사용)을 만드는 모범 사례는 무엇입니까? 튜토리얼, 링크, 예제는 높이 평가됩니다.

도움이 되었습니까?

해결책

당신이 사용할 수있는 개미 설정, 컴파일, 전쟁, 솔루션을 배포하십시오.

<target name="default" depends="setup,compile,buildwar,deploy"></target>

그런 다음 Eclipse에서 한 번의 클릭을 실행하여 해당 개미 대상을 실행할 수 있습니다. 각 단계의 예는 다음과 같습니다.

전제 조건

우리는 다음과 같이 코드를 구성한다고 가정합니다.

  • ${basedir}/src: Java 파일, 속성, XML 구성 파일
  • ${basedir}/web: JSP 파일
  • ${basedir}/web/lib: 런타임에 필요한 모든 항아리
  • ${basedir}/web/META-INF: 당신의 명백
  • ${basedir}/web/WEB-INF: web.xml 파일

설정

정의 a 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 파일을 클래스로 만들고 아래에있는 비 자바 아티팩트에 대해 복사하십시오. 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>

배포

마지막으로 전쟁을 Tomcat 배포 위치에 직접 배치하는 작업을 설정할 수 있습니다.

<target name="deploy">
    <copy file="My.war" todir="${tomcat.deploydir}" />
</target>

클릭하고 이동!

이 모든 것이 설정되면 단순히 default Eclipse의 대상은 솔루션을 컴파일, 전쟁 및 배포합니다.

이 접근법의 장점은 Eclipse 외부 및 Eclipse 내에서 작동 할 것이며 프로젝트를 진행하는 다른 개발자와 배포 전략 (예 : 소스 제어를 통해)을 쉽게 공유하는 데 사용될 수 있다는 것입니다.

다른 팁

나는 항상 Eclipse에서 수출을 선택했습니다. 전쟁 파일을 작성하고 필요한 모든 파일을 포함합니다. 프로젝트를 웹 프로젝트로 만들었습니다. Eclipse는 매우 간단합니다.

우리는 모든 Java 프로젝트에 Maven (Ant 's Big Brother)을 사용하며 매우 멋진 전쟁 플러그인이 있습니다. 튜토리얼과 사용법은 거기에서 찾을 수 있습니다.

개미보다 훨씬 쉽고 Eclipse와 완전히 호환됩니다 (사용 Maven 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>

전쟁 파일은 단순히 전쟁 연장이있는 JAR 파일이지만 작동하는 것은 내용이 실제로 어떻게 구성되는지입니다.

J2EE/Java EE 튜토리얼은 시작이 될 수 있습니다.

http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/webcomponents3.html

서블릿 사양에는 Gory 세부 사항이 포함되어 있습니다.

http://java.sun.com/products/servlet/download.html

Eclipse에서 새로운 웹 프로젝트를 작성하는 경우 (Java EE 버전을 언급하고 있음) 구조는 귀하를 위해 작성되며 AppServer가 설치된 위치를 알 수 있으며 응용 프로그램을 배포하고 시작합니다.

"Export-> War 파일"옵션을 사용하면 전쟁 파일을 저장할 수 있습니다.

당신이 무엇을 해야할지 잘 모르고 처음부터 시작하는 경우 Maven은 당신을 시작하는 데 도움이 될 수 있습니다.

아래 단계를 따르면 Eclipse에서 새로운 전쟁 프로젝트를 완벽하게 얻을 수 있습니다.

  1. 다운로드 및 설치 Maven
  2. 명령 행 실행으로 이동하십시오. mvn archetype:generate
  3. 프롬프트 단계를 따르십시오 - 간단한 Java 웹 프로젝트 (18)와 적절한 이름을 선택하십시오.
  4. 실행이 완료되면 : mvn eclipse:eclipse
  5. 일식을 시작하십시오. 파일 -> 가져 오기 -> 기존 프로젝트를 선택하십시오. MVN 목표를 달성 한 디렉토리를 선택하십시오.
  6. 그게 당신은 이제 Eclipse에서 전쟁 프로젝트를 아주 잘 시작해야합니다.
  7. 당신은 달리면 전쟁 자체를 만들 수 있습니다 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를 사용하여 자동으로 빌드하는 것입니다. 물론 지속적인 통합 환경이있는 경우 개미 나 Maven이 권장됩니다. 내보내기 대안은 수출 속성을 할 때마다 구성해야하기 때문에 편리하지 않습니다.

단계 :

  1. "프로젝트 아카이브"지원을 활성화합니다. 이것은 귀하의 프로젝트에 따라 다를 수 있습니다 (Java EE/Web Project에서 사용했습니다). 프로젝트 루트 디렉토리를 마우스 오른쪽 버튼으로 클릭하십시오. 구성 -> 프로젝트 아카이브 지원 추가.

  2. "Project Archives"Top Dir에서 새로운 아카이브를 만들어보십시오. jar 옵션 만 있지만 Archive *.war의 이름을 지정합니다.

  3. Fileset-S를 구성하고 포함 할 파일을 구성하십시오. 일반적인 것은 웹 배포 어셈블리 (프로젝트 속성)가 구성되는 방식 유사한 두 파일 세트를 구성하는 것입니다.

    • 복사 /webContent에 /
    • 복사/빌드/클래스에 대한 웹 -INF/클래스 (아카이브에서 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의 빈 디렉토리를 가리키는이 위업 및 환경 변수를 달성하려면 JDK 1.7+가 설치되어야합니다.

jar -cvf projectname.war *

참조 링크

Eclipse Workspace를 새로 고치는 간단한 솔루션 :

<?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>

표준 Eclipse Dynamic Web Project에서 전쟁 파일 생성을위한 단순한 쉘 코드. Linux 플랫폼에서 RAM 파일 시스템 (/dev/shm)을 사용합니다.

#!/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. 작업 관리자의 자바 킬 :

  1. Eclips에서 깨끗한 comand를 실행하십시오

  2. 프로젝트 이름으로 'Prod War'를 실행하십시오.

  3. 로그 파일을 확인하고 동일한 날짜로 Workbench 디렉토리에서 동일한 .war 파일을 찾으십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top