아파치 개미

Apache Ant
아파치 개미
Apache-Ant-logo.svg
원저작자제임스 던컨 데이비슨
개발자Apache 소프트웨어 재단
초기 릴리즈2000년 7월 19일, 22년(2000-07-19)
안정된 릴리스
1.10.11 / 2021년 7월 13일; 12개월 전(2021-07-13)[1]
저장소개미 저장소
기입처자바
플랫폼자바 SE
유형빌드 툴
면허증.Apache 라이센스 2.0
웹 사이트ant.apache.org Edit this on Wikidata

Apache Ant는 Unix[3]Make Build 도구를 대체하기 위해 2000년 초 Apache Tomcat 프로젝트에서 시작된 소프트웨어 빌드[2] 프로세스를 자동화하기 위한 소프트웨어 도구입니다.Make와 비슷하지만 Java 언어를 사용하여 구현되며 Java 플랫폼이 필요합니다.Makefile 형식을 사용하는 Make와 달리 Ant는 XML을 사용하여 코드 빌드 프로세스와 그 종속성을 설명합니다.

Apache Software Foundation에 의해 Apache License로 출시된 Ant는 오픈 소스 프로젝트입니다.

역사

Ant("Another Neat Tool")[4]은 오픈 소스로 출시하기 위해 Sun Microsystems의 참조 JSPServlet 엔진(나중에 Apache Tomcat)을 준비하는 동안 James Duncan Davidson에 의해 고안되었습니다.Solaris 플랫폼에서 Make를 빌드하기 위해 Make의 독자 버전이 사용되었지만 오픈 소스 환경에서는 Tomcat을 빌드하는 데 사용되는 플랫폼을 제어할 방법이 없었습니다. 따라서 Ant는 XML "빌드 파일"의 디렉티브에서 Tomcat을 빌드하기 위한 간단한 플랫폼 독립 도구로 만들어졌습니다.Ant(버전 1.1)는 2000년 7월 19일에 독립 실행형 제품으로 공식 출시되었습니다.

James Duncan Davidson의 AntEater, Peter[5] Donald의 Myrmidon, Cornor MacNeill의 Mututute 등 개미 버전 2에 대한 몇 가지 제안이 있었지만 개발자 커뮤니티에서 [6]큰 호응을 얻지 못했다.

한때(2002년) Ant는 대부분의 Java 개발 [7]프로젝트에서 사용되는 빌드 도구였습니다.예를 들어, 대부분의 오픈 소스 Java 개발자가 포함되어 있습니다.build.xml파일을 [citation needed]배포합니다.Ant는 JUnit 테스트를 빌드 프로세스와 통합하는 것을 단순하게 했기 때문에, Ant는 개발자들이 테스트 주도의 개발 극단적인 프로그래밍을 채택할 수 있도록 했습니다.

2004년 Apache는 Maven이라는 비슷한 목적을 가진 새로운 도구를 만들었다.

Gradle은 2008년에 개발되었으며 XML 대신 groovy(및 몇 가지 다른 언어) 코드를 사용합니다.

내선번호

WOProject-Ant는[8] Ant용으로 작성된 태스크 확장의 많은 예 중 하나에 불과합니다.이러한 확장 기능은, 다음의 파일을 카피하는 것으로써 인스톨 됩니다..jar줄지어 개미에게 가다lib디렉토리로 이동합니다.이 작업이 완료되면 이러한 작업 확장은 표준에서 직접 호출할 수 있습니다.build.xml WOProject 확장 기능을 통해 WebObject 개발자는 Apple Xcode 스위트를 사용하는 대신 ant를 사용하여 프레임워크와 앱을 구축할 수 있습니다.

Antcontrib[9] 는 속성에 대한 조건문, 조작 및 기타 유용한 [10]작업 등의 작업 모음을 제공합니다.

Ant-contrib.unkrig.de[11] 는 네트워킹, Swing 사용자 인터페이스, JSON 처리 등의 태스크와 유형을 구현합니다.

Perforce 에는 다른 작업 확장이 있습니다.NET Framework, EJB 및 파일 시스템 조작.[12]

다음은 샘플 목록입니다.build.xml간단한 Java "Hello, world" 어플리케이션 파일입니다.네 가지 대상을 정의합니다.clean,clobber,compile그리고.jar각각에 관련된 설명이 있습니다.jartarget 목록에는compile의존관계로서 타겟을 설정합니다.이것은 개미에게 그것이 시작하기 전에jar타깃은 먼저 완료해야 합니다.compile타겟을 설정합니다.

<?xml version="1.0"?> <프로젝트> 이름="안녕하세요" 디폴트="실패">     <타깃 이름="깨끗하다" 설명="중간 파일 제거">         <삭제하다 dir="실패"/>     </target>     <타깃 이름="클러버" 의존="깨끗하다" 설명="모든 아티팩트 파일 제거">         <삭제하다 파일="hello.jar"/>     </target>     <타깃 이름="실패" 설명="Java 소스 코드를 클래스 파일에 컴파일">         <140dir> dir="실패"/>         <140ac> srcdir="." destdir="실패"/>     </target>     <타깃 이름="항아리" 의존="실패" 설명="응용 프로그램용 Jar 파일 만들기">         <항아리 destfile="hello.jar">             <파일 세트 dir="실패" 포함="**/** 클래스"/>             <blocks>                 <클라이언트> 이름='메인 클래스' 값="Hello Program"/>             </filters>         </jar>     </target> </프로젝트> 

각 타깃에는 앤트가 타깃을 구축하기 위해 수행해야 하는 액션이 포함되어 있습니다.이러한 액션은 임베디드 태스크를 사용하여 수행됩니다.예를 들면, compile 대상 개미는 먼저 다음과 같은 디렉토리를 생성해야 합니다.classes(아직 존재하지 않는 경우에만 실행한다.)그리고 Java 컴파일러를 기동합니다.따라서 사용되는 태스크는 다음과 같습니다.mkdir그리고.javac. 이들은 같은 이름의 명령줄 유틸리티와 유사한 작업을 수행합니다.

이 예에서 사용되는 다른 작업은 다음과 같습니다.jar:

<항아리 destfile="hello.jar"> 

이 Ant 태스크는 일반적인 Java 명령줄 유틸리티인 JAR과 이름이 같지만 실제로는 Ant 프로그램의 내장 JAR/Z에 대한 호출입니다.IP 파일 지원이 세부 정보는 원하는 JAR만 원하는 최종 사용자에게는 관련이 없습니다.

대부분의 개미 태스크는 네이티브 또는 자바 중 하나의 외부 프로그램에 작업을 위임합니다.그들은 개미 자신의 것을 사용한다.<exec>그리고.<java>명령줄을 설정하고 빌드 파일의 정보에서 프로그램의 인수에 대한 매핑 및 반환값 해석에 대한 모든 세부 정보를 처리하는 작업입니다.사용자는 이를 수행하는 작업을 볼 수 있습니다(예:<csv>,<signjar>,<chmod>,<rpm>패스에 기반이 되는 프로그램이 없거나 Java Development Kit(JDK; Java 개발 키트)가 완전히 설치되지 않은 시스템에서 작업을 실행하려고 합니다.

휴대성

Ant는 Java 런타임 사용 가능한 모든 시스템에서 작동하도록 설계되었습니다.Windows, Linux, macOS기타 Unix 운영체제에서 가장 일반적으로 사용되지만 OS/2, OpenVMS, Solaris, HP-UX [13]등의 다른 플랫폼에서도 사용되고 있습니다.

Ant는 Make보다 휴대성이 뛰어나도록 설계되었습니다.Make에 비해 Ant는 플랫폼 고유의 셸 명령어를 적게 사용합니다.Ant는 모든 플랫폼에서 동일하게 동작하도록 설계된 빌트인 기능을 제공합니다.예를 들어, 샘플에서build.xml위의 파일, 클린 타깃은 다음 파일을 삭제합니다.classes디렉토리 및 그 안에 있는 모든 것.Makefile에서는 일반적으로 다음 명령을 사용합니다.

rm - classes /

rm는 일부 다른 환경에서는 사용할 수 없는 Unix 고유의 명령어입니다.를 들면, Microsoft Windows 는 다음을 사용합니다.

rmdir /S /Q 클래스

Ant 빌드 파일에서도 동일한 목표는 기본 제공 명령을 사용하여 달성됩니다.

 <삭제하다 dir="실패"/> 

또한 앤트는 디렉토리의 경우 슬래시 또는 백슬래시와 경로 구분자의 경우 세미콜론 또는 콜론을 구분하지 않습니다.각 항목을 실행하는 플랫폼에 적합한 기호로 변환합니다.

제한 사항

  • XML로 작성된 개미 빌드 파일은 계층적이고 부분적으로 순서가 있으며 광범위하게 상호 연결되기 때문에 복잡하고 상세할 수 있습니다.이러한 복잡성은 학습의 장벽이 될 수 있습니다.대규모 또는 복잡한 프로젝트의 빌드 파일은 관리 불가능한 크기가 될 수 있습니다.빌드 파일을 적절히 설계하고 모듈화하면 가독성은 향상되지만 반드시 크기를 줄일 수는 없습니다.
  • 다음과 같은 오래된 태스크의 대부분은<javac>,<exec>그리고.<java>: 최신 버전의 작업과 일치하지 않는 옵션에 기본값을 사용합니다.이러한 기본값을 변경하면 기존 Ant 스크립트가 손상됩니다.
  • 문자열 또는 텍스트 요소의 속성을 확장할 때 정의되지 않은 속성은 오류로 발생하지 않고 확장되지 않은 참조로 남습니다(예:${unassigned.property}).
  • 앤트에게는 장애 처리 규칙이 한정되어 있습니다.
  • 느린 속성 평가는 지원되지 않습니다.예를 들어 Antcontrib 내에서 작업하는 경우<for>루프. 반복의 일부일 수 있는 하위 값에 대해 속성을 다시 검색할 수 없습니다.(일부 서드파티 확장은 회피책을 용이하게 합니다.AntXtras 흐름제어 태스크셋은 루프의 커서 정의를 제공합니다.)
  • makefiles에서는 makefile 내에 한 파일 형식을 다른 파일 형식에서 생성하는 규칙을 인라인으로 작성할 수 있습니다.예를 들어, 다른 도구를 실행하는 규칙을 사용하여 문서를 다른 형식으로 변환할 수 있습니다.Ant에서 유사한 작업을 작성하는 것은 더 복잡합니다.같은 유형의 기능을 처리하려면 별도의 작업을 Java로 작성하여 Ant 빌드 파일에 포함해야 합니다.단, 이 분리를 통해 다른 플랫폼에서 작업이 실행되는 방법에 대한 자세한 내용을 숨김으로써 Ant 스크립트의 가독성이 향상될 수 있습니다.

부족한 기능의 대부분을 제공하는 서드파티제의 Ant 확장 기능(안티립이라고 불립니다)이 있습니다.또한 Eclipse 통합 개발 환경(IDE)은 Ant 스크립트를 빌드 및 실행할 수 있으며 NetBeans IDE는 내부 빌드 시스템에 Ant를 사용합니다.이러한 IDE는 모두 매우 인기 있는 개발 플랫폼이기 때문에 Ant의 사용을 대폭 간소화할 수 있습니다(게다가 NetBeans에서 생성된 Ant 스크립트를 IDE 외부에서 스탠드아론 스크립트로 사용할 수 있습니다).

「 」를 참조해 주세요.

  • 자동화 구축
  • Apache Jelly, XML을 실행 가능한 코드로 변환하는 도구
  • Apache Ivy는 Ant의 서브프로젝트인 Ant와 긴밀하게 통합되는 의존관계 매니저입니다.
  • 주로 Java용 프로젝트 관리 및 빌드 자동화 도구인 Apache Maven
  • 를 타겟으로 하는 Nant, 개미와 같은 툴.Java가 아닌 NET Framework 환경
  • Groovy로 구축된 JVM 빌드 툴인 Gradle

레퍼런스

  1. ^ "Apache Ant Project News". Retrieved 31 August 2021.
  2. ^ "Apache Ant - Welcome". ant.apache.org. Retrieved 2022-01-25.
  3. ^ "Apache Ant - Frequently Asked Questions". ant.apache.org. Retrieved 2022-01-25.
  4. ^ "Why do you call it Ant? – Apache Ant FAQ".
  5. ^ 피터 도널드."Myrmidon: 「Ant2.0 제안」.
  6. ^ MacNeill, Conor. "The Early History of Ant Development".
  7. ^ Wiley (2002). Java Tools for eXtreme Programming. p. 76.
  8. ^ "WOProject-Ant – WOProject / WOLips – Confluence". Archived from the original on 2009-01-08.
  9. ^ "Ant-Contrib".
  10. ^ "Ant-Contrib Tasks".
  11. ^ "ant-contrib.unkrig.de".
  12. ^ "Overview of Ant Tasks".
  13. ^ Apache Ant Manual.섹션 "시스템 요건"

추가 정보

외부 링크