[java] 전쟁 파일을 만드는 방법

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



답변

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배포 디렉토리를 생성하고 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 파일을 클래스로 빌드하고 그 아래에 src있지만 런타임시 사용할 수 있어야 하는 비 Java 아티팩트 (예 : 속성, 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>

WAR 빌드

WAR 자체를 작성하십시오.

<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 배포 위치에 WAR을 직접 배포하는 작업을 설정할 수 있습니다.

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

클릭하고 가십시오!

이 모든 것이 설정되면 defaultEclipse 에서 대상을 실행하기 만하면 솔루션이 컴파일, WAR 및 배포됩니다.

이 접근 방식의 장점은 Eclipse 내에서뿐만 아니라 Eclipse 외부에서도 작동하고 프로젝트를 함께 작업하는 다른 개발자와 배포 전략 (예 : 소스 제어를 통해)을 쉽게 공유하는 데 사용할 수 있다는 것입니다.


답변

저는 항상 Eclipse에서 내보내기를 선택했습니다. war 파일을 빌드하고 필요한 모든 파일을 포함합니다. 프로젝트를 웹 프로젝트로 생성 한 것을 제공하기 만하면됩니다. Eclipse를 사용하면 매우 간단합니다.


답변

우리는 모든 자바 프로젝트에 Maven (Ant의 빅 브라더)을 사용하며 매우 멋진 WAR 플러그인을 가지고 있습니다. 튜토리얼과 사용법은 거기에서 찾을 수 있습니다.

Ant보다 훨씬 쉽고 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>


답변

war 파일은 단순히 war 확장자가있는 jar 파일이지만 내용이 실제로 구조화되는 방식이 작동합니다.

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

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

그리고 Servlet 사양에는 세부 정보가 포함되어 있습니다.

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

Eclipse에서 새 웹 프로젝트를 생성하면 (Java EE 버전을 의미 함) 구조가 생성되며 Appserver가 설치된 위치를 알려줄 수 있으며 애플리케이션을 배포하고 시작할 것입니다.

“내보내기-> WAR 파일”옵션을 사용하면 전쟁 파일을 저장할 수 있습니다.


답변

무엇을해야할지 확실하지 않고 처음부터 시작하는 경우 Maven이 시작하는 데 도움을 줄 수 있습니다.

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

  1. Maven 다운로드 및 설치
  2. 명령 줄 실행 : mvn archetype:generate
  3. 프롬프트 된 단계를 따르십시오-간단한 Java 웹 프로젝트 (18) 및 적절한 이름 선택.
  4. 완료되면 다음을 실행하십시오. mvn eclipse:eclipse
  5. Eclipse를 시작하십시오. 파일-> 가져 오기-> 기존 프로젝트를 선택합니다. mvn 목표를 실행 한 디렉토리를 선택하십시오.
  6. 이제 Eclipse에서 전쟁 프로젝트를 아주 잘 시작해야합니다.
  7. mvn packageEclipse에서 서버를 설정하고 단순히 프로젝트를 서버에 추가하여 실행 하거나 배포 하여 전쟁 자체를 만들 수 있습니다 .

다른 사람들이 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>