본문 바로가기

ANT/Ivy

[ANT] 타입과 프로퍼티

 

1.경로형 구조 타입

- 클래스패스나 패스처럼 ant에서 경로를 나타내고자 할 때 사용하는 타입이다. 이 타입의 하위 엘리먼트인 pathelement는 파일이나 디렉토리 값을 지정한다.


<classpath path="${classpath}"/>를


<classpath>

 <pathelement path="${classpath}"/>

</classpath>

로 사용 할 수 있다.


pathelement를 사용한 경우 먼저 선언한 패스부터 클래스패스를 잡을 수 있다.예로 같은 클래스가 a.jar파일과 b.jar파일에 존재하고, a.jar가 먼저 선언되어있다면 a.jar의 클래스를 사용한다.


fileset타입으로 경로를 설정하기도 하는데 이때 클래스패스의 순서는 보장하지 못 한다.


<classpath를 나타내는 여러가지 ㅇㅖ>

<classpath>

<pathelement path="${classpath}"/>

<fileset dir="lib">

<include name="**/*.jar"/>

</fileset>

<pathelement location="classes"/>

<dirset dir="${build.dir}">

<include name="apps/**/classes"/>

<exclude name="apps/**/*Test*"/>

</dirset>

<filelist refid="third-party_jars"/>

</classpath>


${classpath} 디렉토리

lib디렉토리 이하의 모든 jar파일

classes디렉토리

${build.dir}디렉토리내에 apps/**/classes패키지를 포함하고 패키지명에 Test문자를 포함하는 패키지는 제외한다.

id가 third-party_jars인 파일 리스트를 참고한다.


<path id="project.class.path">

<pathelement location="lib/"/>등으로 해놓고


<classpath refid="project.class.path>등으로 사용한다.



FILE SET

파일과 디렉토리의 집합을 나타내는 타입이다.

Example

<fileset dir="${server.src}">

<include name="**/*.java"/>

<exclude name="**/*Test*"/>

</fileset>


참고

<classpath>
      <pathelement path="${classpath}"/>
      <pathelement location="lib/helper.jar"/>
    </classpath>

location 속성은, 프로젝트의 기본 디렉토리(또는 절대 파일명의)에 대해서 단일의 파일 또는 디렉토리를 지정합니다,


한편 path 속성은 콜론- 이나 세미콜론- 으로 단락지어진 위치의 리스트를 받아들입니다.


pathlocation 속성을 지원한 <classpath> 태그를 기술하는 지름길로서:

    <classpath>
      <pathelement path="${classpath}"/>
    </classpath>

는 다음과 같이 단축할 수가 있습니다.

    <classpath path="${classpath}"/>

게다가, DirSets, FileSets, 와 FileLists 는, 내부에 <dirset>, <fileset>, 과 <filelist> 요소로 지정할 수가 있습니다. 주의:경로같은 것들의 구조에 FileSet를 빌드하는 파일이 추가되는 순서는 정의되지 않고 있습니다.

    <classpath>
      <pathelement path="${classpath}"/>
      <fileset dir="lib">
        <include name="**/*.jar"/>
      </fileset>
      <pathelement location="classes"/>
      <dirset dir="${build.dir}">
        <include name="apps/**/classes"/>
        <exclude name="apps/**/*Test*"/>
      </dirset>
      <filelist refid="third-party_jars">
    </classpath>

이것은, ${classpath}의 값에, lib디렉토리 안의 모든 jar 파일, classes디렉토리, ${build.dir}apps 서브 디렉토리 아래의 모든 classes 라고 명명된 디렉토리를 추가한 path를 구축합니다. 단, 이름에 Test를 포함한 경우와 FileList로 지정된 파일은 제외됩니다.