맨위로가기

아파치 앤트

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

아파치 앤트(Apache Ant)는 자바 기반의 소프트웨어 빌드 도구이다. 썬 마이크로시스템즈에서 JSP/Servlet 표준 구현 엔진인 톰캣을 오픈소스로 개발하는 과정에서, 다양한 운영체제 환경에서 톰캣을 빌드하기 위해 제임스 던컨 데이비슨에 의해 처음 구상되었다. Ant는 XML 기반의 빌드 파일을 사용하여 플랫폼 독립적인 빌드를 지원하며, 자바 프로젝트의 공식적인 빌드 도구로 널리 사용된다. 주요 기능으로는 소스 코드 컴파일, 문서 생성, 테스트 실행, 파일 복사, 압축 등이 있으며, 다양한 확장 기능을 통해 기능을 확장할 수 있다.

더 읽어볼만한 페이지

  • XML 소프트웨어 - 아파치 피봇
    아파치 피봇은 자바 기반의 오픈 소스 데스크톱 애플리케이션 개발 플랫폼으로, 유연하고 사용자 정의 가능한 UI를 구축할 수 있는 위젯 툴킷(WTK)을 제공한다.
  • 아파치 소프트웨어 재단 프로젝트 - 아파치 루씬
    아파치 루씬은 더그 커팅이 개발한 오픈 소스 전문 검색 라이브러리이며, 텍스트 색인 및 검색 기능을 제공하여 웹 검색 엔진, 퍼지 검색, 추천 시스템 구현 등에 사용된다.
  • 아파치 소프트웨어 재단 프로젝트 - 아파치 하둡
    아파치 하둡은 대용량 데이터를 분산 처리하기 위한 자바 기반의 오픈 소스 프레임워크로, HDFS, 맵리듀스, YARN 등의 모듈로 구성되어 클라우드 환경에서도 사용된다.
  • 자바로 작성된 자유 소프트웨어 - Jitsi
    Jitsi는 오픈 소스 화상 회의 솔루션으로, 학생 프로젝트에서 시작하여 여러 회사를 거쳐 현재 8x8에 인수되었으며, Jitsi Meet 등을 통해 간편한 화상 회의 기능을 제공하지만 개인 정보 보호에 대한 비판도 존재한다.
  • 자바로 작성된 자유 소프트웨어 - I2P
    I2P는 2003년 Freenet에서 분기된 익명 P2P 분산 통신 계층으로, IP 주소 노출을 방지하며 다양한 소프트웨어와 익명성 응용 프로그램을 지원하고, 기부금으로 운영되며 6~8주마다 릴리스를 진행한다.
아파치 앤트 - [IT 관련 정보]에 관한 문서
기본 정보
아파치 앤트 로고
아파치 앤트 프로젝트 로고
개발자아파치 소프트웨어 재단
최초 릴리스2000년 7월 19일
최신 릴리스 버전1.10.15
최신 릴리스 날짜2024년 8월 29일
플랫폼Java SE
저장소Ant 저장소
프로그래밍 언어Java
장르빌드 도구
라이선스아파치 라이선스 2.0
상세 정보
작성자제임스 던컨 데이비슨

2. 역사

제임스 던컨 데이비슨은 선 마이크로시스템즈에서 톰캣으로 발전하는 JSP/Servlet 표준 구현 엔진을 오픈소스화하던 중 앤트를 처음 구상하였다. 사유 소프트웨어인 make를 솔라리스에서 사용했지만, 다른 환경에서는 이를 수행할 수 있는 오픈 소스 소프트웨어가 없었기 때문이다.[4]

아파치 앤트의 각 버전별 최소 자바 버전은 아래 표와 같다. 단, 컴파일 작업이 필요하므로 JRE가 아닌 JDK가 필요하며, 일부 필수 패키지가 아닌 선택적 패키지의 경우 아래 표보다 더 높은 버전을 요구할 수 있다.[17]

앤트 버전최소 자바 버전
1.1 ~ 1.5.41.1
1.6.0 ~ 1.6.51.2
1.7.0 ~ 1.7.11.3
1.8.0 ~ 1.8.31.4
현재 개발 버전(SVN trunk)1.5(5.0)


2. 1. 개발 배경

제임스 던컨 데이비슨은 썬 마이크로시스템즈참조 JSP 및 서블릿 엔진(후에 톰캣으로 발전)을 오픈 소스로 출시하기 위해 준비하는 과정에서 앤트를 구상하였다. 독점 버전의 make가 솔라리스 플랫폼에서 빌드하는 데 사용되었지만, 오픈 소스 세계에서는 톰캣을 빌드하는 데 사용되는 플랫폼을 제어할 방법이 없었다. 그래서 앤트는 XML "빌드 파일"의 지침을 통해 톰캣을 빌드하는 간단한 플랫폼 독립적 도구로 만들어졌다.[4] 앤트의 최초 버전은 시스템 독립적으로 톰캣을 빌드하기 위한 툴로서 생겨났으며 2000년 7월 19일 독립형 제품으로서 발표되었다(1.1 버전).[4]

2. 2. 초기 버전 출시 및 발전

제임스 던컨 데이비슨은 선 마이크로시스템즈에서 톰캣으로 발전하게 되는 JSP/Servlet 표준구현 엔진을 오픈소스화 하던 중, 사유 소프트웨어인 make를 솔라리스에서 사용했지만 다른 환경에서는 이를 수행할 수 있는 오픈소스 소프트웨어가 없었기 때문에 앤트를 최초로 구상하였다.[4]

앤트의 최초 버전은 시스템 독립적으로 아파치 톰캣을 빌드하기 위한 툴로서, 2000년 7월 19일 독립형 제품(1.1 버전)으로 발표되었다.[4] 처음에는 자카르타 프로젝트의 하위 프로젝트였으나 2002년 10월 18일 아파치의 최상위 프로젝트로 승격되었다.

앤트는 수많은 오픈소스의 자동 빌드를 지원하며, 자바 프로젝트의 공식적인 빌드 도구로 사용된다. XML "빌드 파일"의 지침을 통해 톰캣을 빌드하는 간단한 플랫폼 독립적 도구로 만들어졌다.[4]

제임스 던컨 데이비슨의 AntEater, 피터 도널드의 Myrmidon,[5] 코너 맥닐의 Mutant와 같이 Ant 버전 2에 대한 여러 제안이 있었지만, 개발자 커뮤니티에서 큰 호응을 얻지 못했다.[6]

2002년경 Ant는 대부분의 자바 개발 프로젝트에서 사용되는 빌드 도구였다.[7] Ant는 JUnit 테스트를 빌드 프로세스에 통합하는 것을 간단하게 만들어, 개발자가 테스트 주도 개발익스트림 프로그래밍을 채택할 수 있게 했다.

2004년 아파치는 비슷한 목적으로 메이븐이라는 새로운 도구를 만들었다.

2008년에는 XML 대신 Groovy (및 다른 몇몇 언어) 코드를 사용하는 유사한 소프트웨어인 Gradle이 만들어졌다.

2. 3. 버전별 최소 요구 자바 버전

아파치 앤트는 각 버전별로 다음과 같은 최소 자바 버전을 요구한다. 단, 컴파일 작업이 필요하기 때문에 JRE가 아닌 JDK가 필요하며 일부 필수 패키지가 아닌 선택적 패키지의 경우는 아래 내용보다 더 높은 버전을 요구할 수 있다.[17]

앤트 버전최소 자바 버전
1.1 ~ 1.5.41.1
1.6.0 ~ 1.6.51.2
1.7.0 ~ 1.7.11.3
1.8.0 ~ 1.8.31.4
현재 개발버전(SVN trunk)1.5(5.0)


3. 주요 기능 및 확장

앤트는 빌드 프로세스를 자동화하기 위한 다양한 내장 태스크와 확장 기능을 제공한다. 주요 기능으로는 자바 소스 코드 컴파일, Javadoc 문서 생성, 자바 프로그램 실행 및 테스트, 파일 복사/삭제/생성, FTP/SCP/CVS 연결, 전자 서명, JAR 파일 생성, 네트워크 프록시 설정, 타임스탬프 갱신, ZIP 압축, 콘솔 출력 등이 있다.

또한, WOProject-Ant[8], Antcontrib[9], Ant-contrib.unkrig.de[11] 등의 외부 확장을 통해 앤트의 기능을 더욱 확장할 수 있다. 이러한 확장 기능은 WebObjects 개발 지원, 조건문 및 속성 연산, 네트워킹, Swing 사용자 인터페이스, JSON 처리 등을 가능하게 한다. Perforce, .NET Framework, EJB 파일 시스템 조작을 위한 확장 기능도 존재한다.[12]

3. 1. 주요 태스크


  • '''javac''': 자바 소스 코드를 컴파일한다.
  • '''javadoc''': 자바 소스 코드에서 Javadoc 문서(Java API 문서)를 생성한다.
  • '''java''': 자바 프로그램을 실행한다.
  • '''junit''': 테스트 프레임워크 JUnit을 사용하여 자바 프로그램을 테스트한다.
  • '''junitreport''': junit 태스크에서 출력한 결과 파일을 사용하여 HTML 포맷 등에도 대응하는 리포트를 생성한다.
  • '''copy''': 파일을 복사한다.
  • '''delete''': 디렉토리나 파일 등을 삭제한다.
  • '''mkdir''': 디렉토리를 생성한다.
  • '''ftp''': FTP 연결을 시작하여 파일의 업로드, 다운로드 등을 가능하게 한다.
  • '''scp''': SCP, SFTP 연결을 시작하여 파일의 업로드, 다운로드 등을 가능하게 한다.
  • '''cvs''': CVS 연결을 시작하여 CVS 저장소로부터의 체크 아웃, 커밋, 업데이트를 가능하게 한다.
  • '''genkey''': 전자 서명이 있는 JAR 파일을 생성하기 위해 필요한 인증서를 생성한다.
  • '''signjar''': JAR 파일에 서명한다.
  • '''native2ascii''': 자바 소스 코드 등에 포함된 멀티바이트 문자열 부분을 JDK에 부속된 변환 툴을 사용하여 ASCII 코드로 변환한다.
  • '''setproxy''': 네트워크에 접속하는 태스크를 실행할 때 프록시 서버의 주소를 설정한다.
  • '''tstamp''': 타임스탬프를 갱신하고 Ant에서 사용되는 변수 DSTAMP, TSTAMP를 갱신한다.
  • '''zip''': 지정한 디렉토리나 파일을 ZIP 형식으로 압축·아카이브한다.
  • '''echo''': 콘솔(명령줄 환경)에 문자열을 출력한다.
  • '''splash''': 실행 시 지정한 시간 동안 스플래시 스크린을 표시한다. 이미지를 지정할 수도 있다.
  • '''buildnumber''': 빌드 번호를 갱신한다. 기본적으로는 같은 디렉토리에 build.numer라는 이름의 파일이 자동 생성되어, 그 파일에 빌드 번호가 기록된다.
  • '''ant''': 다른 Ant 빌드 파일에 있는 태스크를 불러와 실행한다.

3. 2. 확장 기능

WebObjects 개발을 지원하는 WOProject-Ant[8]는 앤트의 기능을 확장하는 대표적인 예시이다. 이러한 확장은 `.jar` 파일을 앤트의 `lib` 디렉토리에 복사하여 설치하며, 일반적인 `build.xml` 파일에서 직접 호출할 수 있다. WOProject 확장을 이용하면 애플의 Xcode 제품군 대신 앤트를 사용하여 프레임워크와 앱을 빌드할 수 있다.

Antcontrib[9]는 조건문, 속성 연산 및 기타 유용한 태스크를 제공한다.[10]

Ant-contrib.unkrig.de[11]는 네트워킹, Swing 사용자 인터페이스, JSON 처리 등을 위한 태스크와 타입을 구현한다.

Perforce, .NET Framework, EJB, 파일 시스템 조작을 위한 다른 태스크 확장도 존재한다.[12]

4. 이식성

앤트는 자바 런타임이 사용 가능한 모든 시스템에서 작동하도록 설계되었다. 일반적으로 윈도우, 리눅스, macOS 및 기타 유닉스 운영 체제와 함께 사용되지만 OS/2, OpenVMS, 솔라리스, HP-UX와 같은 다른 플랫폼에서도 사용되었다.[13]

앤트는 Make보다 이식성이 뛰어나도록 설계되었다. Make에 비해 앤트는 플랫폼별 셸 명령어를 덜 사용한다. 앤트는 모든 플랫폼에서 동일하게 작동하도록 설계된 내장 기능을 제공한다. 예를 들어, ''clean'' 대상은 `classes` 디렉토리와 그 안의 모든 것을 삭제한다. Make 파일에서는 일반적으로 `rm -rf classes/` 명령을 사용하여 수행하는데, `rm`은 일부 다른 환경에서는 사용할 수 없는 유닉스 특정 명령이다. 마이크로소프트 윈도우는 `rmdir /S /Q classes`를 사용한다. Ant 빌드 파일에서는 ``와 같은 내장 명령을 사용하여 동일한 목표를 달성할 수 있다.

또한 앤트는 디렉토리에 대한 슬래시와 백슬래시, 경로 구분 기호에 대한 세미콜론과 콜론을 구분하지 않는다. 실행되는 플랫폼에 적합한 기호로 변환한다.

5. 한계점

앤트 빌드 파일은 XML로 작성되며, 계층적이고 부분적으로 정렬되어 있으며 광범위하게 상호 연결되어 있어 복잡하고 장황할 수 있다. 이러한 복잡성은 학습에 장벽이 될 수 있으며, 크거나 복잡한 프로젝트의 빌드 파일은 관리하기 어려울 정도로 커질 수 있다. 좋은 빌드 파일 설계와 모듈화는 가독성을 향상시킬 수 있지만 반드시 크기를 줄이는 것은 아니다.

`javac`, `exec`, `java`와 같은 많은 오래된 작업은 작업의 최신 버전과 일치하지 않는 옵션에 대한 기본값을 사용한다.[1] 이러한 기본값을 변경하면 기존 앤트 스크립트가 중단된다.[1]

문자열 또는 텍스트 요소에서 속성을 확장할 때 정의되지 않은 속성은 오류로 발생하지 않고 확장되지 않은 참조(예: `${unassigned.property}`)로 남는다.[2]

앤트는 제한적인 오류 처리 규칙을 가지고 있다.[3]

지연 평가는 지원되지 않는다.[4] 예를 들어, Antcontrib `for` 루프 내에서 작업할 때 반복의 일부일 수 있는 하위 값에 대해 속성을 다시 평가할 수 없다. (일부 타사 확장은 해결 방법을 용이하게 한다. AntXtras 흐름 제어 작업 세트는 루프에 대한 커서 재정의를 제공한다.)[4]

make 파일에서 한 파일 형식을 다른 파일 형식으로 만드는 모든 규칙은 make 파일 내에서 인라인으로 작성할 수 있다.[5] 예를 들어, 다른 도구를 실행하는 규칙을 사용하여 문서를 다른 형식으로 변환할 수 있다. 앤트에서 유사한 작업을 생성하는 것은 더 복잡하다. 동일한 유형의 기능을 처리하기 위해 별도의 작업이 Java로 작성되어 앤트 빌드 파일에 포함되어야 한다.[5] 그러나 이러한 분리는 다양한 플랫폼에서 작업이 실행되는 방식의 세부 정보를 숨김으로써 앤트 스크립트의 가독성을 향상시킬 수 있다.[5]

6. 예제

앤트는 XML 기반의 빌드 파일을 사용하여 빌드 프로세스를 정의한다. 앤트 빌드 파일은 여러 개의 대상(target)을 정의할 수 있으며, 각 대상은 특정 작업을 수행한다. 대상 간의 종속성을 정의하여 실행 순서를 제어할 수 있다.

많은 Ant 태스크는 기본 또는 Java의 외부 프로그램에 작업을 위임한다. Ant 자체의 `exec` 및 `java` 태스크를 사용하여 명령줄을 설정하고, 빌드 파일의 정보에서 프로그램의 인수로 매핑하는 것과 반환 값 해석에 대한 모든 세부 사항을 처리한다.

6. 1. Hello, world 예제





































```

위 예제는 `clean`, `clobber`, `compile`, `jar`의 네 가지 대상을 정의하며, 각 대상은 관련 설명과 종속성을 갖는다. 예를 들어 `jar` 대상은 `compile` 대상을 종속성으로 나열하는데, 이는 Ant에게 `jar` 대상을 시작하기 전에 먼저 `compile` 대상을 완료해야 함을 알려준다.

각 대상 내에는 Ant가 해당 대상을 빌드하기 위해 수행해야 할 작업이 있으며, 이는 내장된 태스크를 사용하여 수행된다. 예를 들어, `compile` 대상을 빌드하려면 Ant는 먼저 `classes`라는 디렉토리를 생성해야 하며(Ant는 해당 디렉토리가 아직 존재하지 않는 경우에만 생성한다), 그런 다음 Java 컴파일러를 호출해야 한다. 따라서 사용되는 태스크는 `mkdir` 및 `javac`이다. 이들은 동일한 이름의 명령줄 유틸리티와 유사한 작업을 수행한다.

이 예에서 사용되는 또 다른 태스크는 `jar`이다.

```xml



```

이 Ant 태스크는 일반적인 Java 명령줄 유틸리티인 JAR와 동일한 이름을 가지고 있지만, 실제로는 Ant 프로그램의 내장 JAR/ZIP 파일 지원을 호출하는 것이다.

참조

[1] 웹사이트 Apache Ant Project News https://ant.apache.o[...] 2024-12-11
[2] 웹사이트 Apache Ant - Welcome https://ant.apache.o[...] 2022-01-25
[3] 웹사이트 Apache Ant - Frequently Asked Questions https://ant.apache.o[...] 2022-01-25
[4] 웹사이트 Why do you call it Ant? – Apache Ant FAQ https://ant.apache.o[...]
[5] 문서 Myrmidon: The Ant2.0 Proposal http://svn.apache.or[...]
[6] 웹사이트 The Early History of Ant Development http://codefeed.com/[...] 2005-08-04
[7] 서적 Java Tools for eXtreme Programming
[8] 웹사이트 WOProject-Ant – WOProject / WOLips – Confluence http://www.objectsty[...]
[9] 웹사이트 Ant-Contrib http://ant-contrib.s[...]
[10] 웹사이트 Ant-Contrib Tasks http://ant-contrib.s[...]
[11] 웹사이트 ant-contrib.unkrig.de http://ant-contrib.u[...]
[12] 웹사이트 Overview of Ant Tasks https://ant.apache.o[...]
[13] 문서 System Requirements https://ant.apache.o[...] Apache Ant Manual
[14] 웹사이트 Apache Ant Project News https://ant.apache.o[...] 2021-10-07
[15] 웹인용 Apache Ant Project News https://ant.apache.o[...] 2022-09-26
[16] 웹인용 Apache Ant - FAQ http://ant.apache.or[...] 아파치 소프트웨어 재단 2012-06-17
[17] 웹인용 Which version of Java is required to run Apache Ant? http://ant.apache.or[...] 아파치 소프트웨어 재단 2012-06-17



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com