검색엔진 라이브러리의 De facto 인 Lucene 4.0을 이클립스에 import 하고 디버깅을 하기 위한 방법을 알아보도록 하겠다.
Ant 설치
다운로드 후 Path, ANT_HOME 설정을 진행하자.
다운로드
각 환경마다 위치는 달라지겠지만, C:/apache-ant-1.8.4 압축을 풀었고 2가지 설정(Path, ANT_HOME) 환경변수 설정을 한다.
Path=%Path%;C:/apache-ant-1.8.4/bin ANT_HOME=C:/apache-ant-1.8.4
콘솔화면에서 ant 라고 쳤을 때, 명령이 정상적으로 실행된다면 맞게 설정한 것이다.
참고. 환경변수 설정법 – http://snoopybox.co.kr/1299
참고. ANT 설치 – https://www.google.com/search?q=ant+설치
ivyIDE
루씬에서는 의존성관리를 위해서 Apache Ivy를 사용하고 있다, Hadoop에서도 동일하게 ant + ivy 빌드 구조를 가져가고 있다. 이클립스에서 ant는 기본적으로 내장이 되어서 배포되지만, ivy를 사용하려고하면 ivyIDE를 설치해야 한다. 이클립스 플러그인으로 되어 있으며, 이클립스 플러그인 설치하는 방식을 그대로 이용하면 된다.
- Help > Software Updates > Find and Install…
- Add 버튼 클릭
- Add Repository
name : ivyIDE URL: http://www.apache.org/dist/ant/ivyde/updatesite
- 설치 진행
lucene 4.0 source 다운로드
다운로드
직접링크 : http://apache.tt.co.kr/lucene/java/4.0.0/lucene-4.0.0-src.tgz
절절한 위치에 압축을 풀자.
ant + ivy Build
압축을 푼 후 lucne 4.0(D:/lucene-4.0.0) 파일들을 유심히 살펴보아야 한다. 루씬에서는 다양한 submodule 들이 연결되어있고, 각 모듈에서 사용하는 공통 의존성들도 정의되어 있다. 특히 빌드를 위해서는 4개의 파일을 잘살펴보아야 한다.
ivy-settings.xml 파일을 제외한 나머지 파일들에 대해서는 일반적인 Ant 스크립트이며, 해당 파일에서 target 을 잘보아야 한다.
- build.xml
- common-build.xml
- module-build.xml
- ivy-settings.xml
루씬에서는 IndexWirter, IndexReader 동시성처리를 하며 테스트를 에서 하기 위해서 다양한 라이브러리를 사용하고 있다.
따라서, 다음과 같은 Target을 주어 빌드를 해야지 ivy에서 의존성파일을 다운로드 받고 정상적으로 테스트 할 수 있다.
Ant 실행을 하면, 다음과 같은 실패메세지가 뜨며, 정상동작하지 않는다.
PS D:Projectslucene-4.0.0> ant test Buildfile: D:Projectslucene-4.0.0build.xml test-core: ivy-availability-check: [echo] [echo] This build requires Ivy and Ivy could not be found in your ant classpath. [echo] [echo] (Due to classpath issues and the recursive nature of the Lucene/Solr [echo] build system, a local copy of Ivy can not be used an loaded dynamically [echo] by the build.xml) [echo] [echo] You can either manually install a copy of Ivy 2.2.0 in your ant classpath: [echo] http://ant.apache.org/manual/install.html#optionalTasks [echo] [echo] Or this build file can do it for you by running the Ivy Bootstrap target: [echo] ant ivy-bootstrap [echo] [echo] Either way you will only have to install Ivy one time. [echo] [echo] 'ant ivy-bootstrap' will install a copy of Ivy into your Ant User Library: [echo] C:UsersAdministrator/.ant/lib [echo] [echo] If you would prefer, you can have it installed into an alternative [echo] directory using the "-Divy_install_path=/some/path/you/choose" option, [echo] but you will have to specify this path every time you build Lucene/Solr [echo] in the future... [echo] ant ivy-bootstrap -Divy_install_path=/some/path/you/choose [echo] ... [echo] ant -lib /some/path/you/choose clean compile [echo] ... [echo] ant -lib /some/path/you/choose clean compile [echo] [echo] If you have already run ivy-bootstrap, and still get this message, please [echo] try using the "--noconfig" option when running ant, or editing your global [echo] ant config to allow the user lib to be loaded. See the wiki for more details: [echo] http://wiki.apache.org/lucene-java/HowToContribute#antivy [echo] ivy-fail: BUILD FAILED D:Projectslucene-4.0.0build.xml:49: The following error occurred while executing this line: D:Projectslucene-4.0.0common-build.xml:337: Ivy is not available Total time: 1 second
따라서, 위 메세지처럼 “ant ivy-bootstrap” 을 실행하자.
PS D:Projectslucene-4.0.0> ant ivy-bootstrap Buildfile: D:Projectslucene-4.0.0build.xml ivy-bootstrap1: [mkdir] Created dir: C:UsersAdministrator.antlib [echo] installing ivy 2.2.0 to C:UsersAdministrator.antlib [get] Getting: http://repo1.maven.org/maven2/org/apache/ivy/ivy/2.2.0/ivy-2.2.0.jar [get] To: C:UsersAdministrator.antlibivy-2.2.0.jar ivy-bootstrap2: ivy-checksum: ivy-bootstrap: BUILD SUCCESSFUL Total time: 4 seconds
자기 자신의 ant lib 폴더 안에 ivy-2.2.0.jar 파일을 다운로드 받았다, 따라서 이제부터는 정상동작을 할 것이다.
“D:/Projects/lucene-4.0.0” 폴더에서 “ant test” 명령어를 실행하면, 테스트케이스가 실행되는 것을 확인할 수 있다.
PS D:/lucene-4.0.0 ant test Buildfile: D:/Projects/lucene-4.0.0/build.xml</code> test-core: ivy-availability-check: ivy-fail: ......중략...... install-junit4-taskdef: test-backwards: test: BUILD SUCCESSFUL Total time: 6 minutes 57 seconds
이클립스 import
- File > New > Java Project
- Use default location 체크 해제
- Location 위치 설정 : D:lucene-4.0.0
- Finish
정상적으로 import 가 될것이며, test package 에서 디버깅을 하면 정상적으로 디버깅모드로 전환되면서 디버깅할 수 있다.
( 덧, 프로젝트 인코딩은 UTF-8 로 해야 한다. 윈도우에서 import 시, MS949로 되어있으면 오류가 남 )
이제부터 즐거운 프로그래밍!! ㅎㅎ ;)
PS. 좋은 코멘트 주신 장용석님 감사합니다. ;)
