'Web. 기타 언어/ant'에 해당되는 글 1건

  1. 2021.08.13 Ant - 예제 및 설명

[ Ant - 예제 및 설명 ]

 

<!-- 
     * KeiisWebservices.war : 파일 만드는 용도 
     * 로컬,개발,운영 다른점
       1. 경로
<property name="system" value="_local" />
<property name="system"    value="_dev" />
<property name="system"    value="_app" />
       2. 로컬         : war를  /JEUS6.0/webhome/autodeply/ 밑으로 복사한다.
             개발,운영 : war를 복사하지 않는다. (개발,운영서버에 배포)
          <copy file="${war.dir}/${war.name}" toFile="C:/TmaxSoft/JEUS6.0/webhome/autodeploy/${war.name}" overwrite="true"/> 
-->

1. Project
   - 정의      : ant build에 필수 tag. 단 하나만 존재 가능
   - name    : 프로젝트이름. ant이름
   - basedir : 모든 경로를 계산하기위한 기본 경로. 
               property에서 basedir속성 설정하면 오버라이드 되지만, 없는 경우 project의 basedir속성을 참조하게 됨
               상대경로는 빌드파일이 들어있는 폴더를 기준으로 결정 
   - default : target지정이 되지 않은 경우 기본적으로 수행되는 target값. 이 target이 project초기화의 일부로 수행됨
                                                                                                                           
2. Property
   - 정의 : 환경변수 설정
   - 종류 : environment : 시스템 환경변수 사용

3. target
   - 정의 : 빌드에 필요한 단계별 과정에 해당되는 단위.
          각 과정은 다른 과정과의 의존성을 가지고 있어서 이 의존성에 의거하여 수행순서가 정해진다.
          이 의존성을 나타내는 속성이 depends이다.
   - 예) <target nmame="A"/>
        <target nmame="B" depends="A"/>
        <target nmame="C" depends="B"/>
        <target nmame="D" depends="C,B,A"/>
    - depends : target D를 실행시킨다고 가정했을 경우에, 의존성 관계에 따라 C가 먼저수행된다.
                (depends대상이 여러개인 경우, 왼쪽에서 오른쪽 순서로 수행됨)
                C가 실행되려면 B가 먼저 선행되어야 하고, B를 실행하기 위해서는 A가 선행되어야 한다.
                target D에서 선언한 depends의 C,B,A가 아니라 각 target의 선행단계가 우선적으로 수행되므로
                결국 A->B->C->D의 순서로 target이 실행되어 진다.
                수행순서를 결정하기 위해 다양한 attrubute가 있지만 depends를 많이 쓴다.
                
3. task
   - 정의 : task는 target에 속하는 더 작은 일의 단위이다. (project > target > task)
          task가 될 수 있는 것은 다양하게 있는데, 위의 예시에서 사용하는 내용을 인용하자면
          clean업무를 하고자 하는 경우 delete를 사용해서 기존의 classes파일을 지우도록 상세 업무를 주고
          compile을 할 때는 지웠던 classes폴더를 다시 만들어 준 후에, javac를 이용하여 compile을 수행하고 있다.
   - 종류 : copy, delete, javac, javadoc, mkdir, jar(또는 tar, zip)

4. javac
   - 정의 : java compile명령어
   - 속성 : srcdir      : java파일이 위치한 경로를 지정
          destdir     : 컴파일 된 class파일이 위치할 경우
          encoding    : 소스파일의 인코딩 설정  
          debug       : 컴파일 시 디버그 정보를 보여줄 것인지 설정. 기본값은 off
          optimize    : 컴파일 시 소스 최적화 여부 설정. 기본값은 off. jdk1.3이후로는 해당 플래그가 필요없음. (컴파일 시 최저고하가 필요없으므로)
          deprecation : jdk버전 업 등의 이유로 사용 중단된 소스 코드(deprecation)를 컴파일 할 것인지를 물어보는 것. 기본값은 off
          verbose     : 컴파일 시 상세한 진행상황을 보여줄 것인지를 설정. 기본값은 off
          failonerror : 빌드에 실해하는 경우 컴파일 에러를 표시할 것인지 물어봄. 기본값은 true 
          includeAntRuntime : classpath에 ant의 runtime라이브러리를 포함시킬 것인지를 확인.
                              build,sysclasspath가 설정되어있지 않으면 기본값이 yes임
                              apache ant 매뉴얼에서는 false설정을 권장함.


<project name="KeiisWebservices(war)-1.7.9(app)" basedir="." default="java.xml.rename">
<property environment="env"/>
 
<property name="axis2.home"       value="${env.AXIS2_HOME}" />
<property name="proj.webinf"       value="../war/WEB-INF" />
<property name="src.main.dir"       value="webserver" />
<property name="src.sub.dir"        value="server" />
<property name="service.name"    value="KeiisWebservices" />

<property name="system"    value="_app" /> <!-- 운영 -->
<!-- <property name="system" value="_local" /> --> <!-- 로컬 -->
<!-- <property name="system"    value="_dev" />  --> <!-- 개발 -->

<property name="axis2.root.dir" value="axis2_war" />
<property name="war.dir"    value="${axis2.root.dir}/war${system}" />   <!-- war파일위치-->
<property name="war.name"    value="KeiisWebservices.war" />

<property name="dest.dir"           value="axis2_war/${service.name}/build" />
<property name="aar.dir"            value="aar" />                               <!-- .aar 기본생성될 경로 -->
<property name="dest.dir.classes"  value="${dest.dir}/classes" />

<property name="axis2.files.dir" value="axis2_war/axis2" />
<property name="axis2.web.xml.dir" value="axis2_war/axis2/WEB-INF/" />   <!-- web.xml 경로 -->
<property name="axis2.aar.dir" value="axis2_war/axis2/WEB-INF/services" /> <!-- axis2.war 내부에  .aar 파일 위치할 경로 -->
 
    <path id="build.class.path">
        <fileset dir="${proj.webinf}/lib">
            <include name="*.jar" />
        </fileset>
        <pathelement location="${dest.dir.classes}" />
    </path>
 
    <target name="clean">
        <delete dir="${dest.dir}" />
    </target>
 
    <target name="prepare">
        <mkdir dir="${dest.dir}" />
        <mkdir dir="${dest.dir.classes}" />
        <mkdir dir="${dest.dir.classes}/META-INF" />
     <mkdir dir="${aar.dir}" />
    </target>

<!-- CommonkeyList.java, web.xml  local/dev/app 에 맞게 copy -->
    <target name="java.xml.rename" depends="clean,prepare"> 
     <copy file="../src/${src.main.dir}/${src.sub.dir}/com/CommonkeyList.java${system}"  tofile="../src/${src.main.dir}/${src.sub.dir}/com/CommonkeyList.java" overwrite="true" />
     <copy file="${axis2.web.xml.dir}/web.xml${system}"    tofile="${axis2.web.xml.dir}/web.xml" overwrite="true" />
     <antcall target="generate.aar" />
    </target>

<!-- Webservices.aar 파일 생성 -->
    <target name="generate.aar">
        <copy file="META-INF/services.xml"  tofile="${dest.dir.classes}/META-INF/services.xml" overwrite="true" />
        <javac srcdir="../src" destdir="${dest.dir.classes}" includes="${src.main.dir}/${src.sub.dir}/**" classpathref="build.class.path"></javac>
        <jar basedir="${dest.dir.classes}" destfile="${aar.dir}/${service.name}.aar" />
     <antcall target="copy.aar" />
    </target>

<!-- 생성한 Webservices.aar 파일을 원하는 위치에 copy -->
<target name="copy.aar">
<echo message="COPY RESOURCE(S) TO JEUS DIR....." />
<copy file="${aar.dir}/${service.name}.aar" toFile="${axis2.aar.dir}/${service.name}.aar" overwrite="true"/>
<antcall target="generate.war" />
</target>

<!-- axis2.war 생성,  jeus폴더에 복사 안함-->
<target name="generate.war">
<jar basedir="${axis2.files.dir}" destfile="${war.dir}/${war.name}" />
<!-- 
<echo message="COPY RESOURCE(S) TO JEUS DIR....." />
<copy file="${war.local.dir}/${war.name}" toFile="C:/TmaxSoft/JEUS6.0/webhome/autodeploy/${war.name}" overwrite="true"/>
-->

</target>

</project>

Posted by 농부지기
,