2012-09-07 5 views
2

안드로이드의 R과 비슷한 자동 생성 리소스 파일을 만들고 싶습니다. 필자는 파일의 구문 분석 및 작성을 수행하고 본질적으로 새 클래스 파일을 만드는 방법을 알고 있습니다. 어떻게해야할지 모르겠지만이 자동 생성 프로세스를 시작하십시오.리소스 파일에서 자동 생성 된 enum을 어떻게 만들 수 있습니까?

이클립스를 사용하면 (이 방법을 불가지론적인 방식으로 사용하는 방법이 있다면 선호 하겠지만) 자동 생성 세션을 트리거하여 속성 파일을 읽고 .java 파일을 만드는 방법은 무엇입니까? 이 파싱 된 파일에서 정적 변수와 "키"를 가지고 있는데, 그 코드에서 참조 할 수 있습니까?

+0

당신은 단지 방법은 당신이 개미 빌더를 사용할 수 있습니다) 자원 (.properties 파일을 변경 한 후 생성을 트리거 할 경우, 귀하의 발전기를 호출합니다. 마우스 오른쪽 버튼을 클릭 프로젝트 -> 속성 -> 작성기 -> 새 – Andreas

답변

2

Java 소스 파일을 생성하는 방법에 대한 몇 가지 예가 have already been provided입니다. 특성 파일을 읽고이 API 중 하나를 호출하는 것이 상대적으로 쉽습니다.

코드 생성 프로세스를 트리거하려면 사용자 지정 빌드 단계를 추가해야합니다. 개미로, 단지 add a custom task. 그런 다음 이클립스 빌더 : 프로젝트 특성 -> 빌더 -> 새로 작성하십시오.

이어서 Eclipse는이 파일을 찾아서 새로 고쳐야합니다. 그렇지 않으면 환경 설정 -> 일반 -> 작업 영역 -> "기본 후크 또는 폴링을 사용하여 새로 고침"및 유사한 항목을 찾아서 확인하십시오. (이 마지막 부분이 제대로 작동하는지 100 % 확신하지 못함에 유의하십시오.)

최소한의 저항 경로는이 빌드 단계를 별도로 실행하는 것입니다. 속성 파일이 그 속성을 자주 변경하지 않는다면 큰 문제는 아닙니다. 이것은 프로토콜 버퍼, JAXB, wsdl2java 등을 사용할 때와 비슷합니다. R.java가하는 것처럼 모든 것이 마술처럼 작동하기를 원한다면 좀 더 복잡한 작업을해야 할 것입니다 :

- 이클립스 빌더 옵션을 사용하여 앤트 태스크가 실행될 때 제어하기 - 그걸 알아낼 수 없다면 Eclipse가 위의 프로젝트에 어떻게 연결되는지 (즉, 프로토콜 버퍼, JAXB, WSDL2Java의 등) - ADT 사용자 정의 PreCompilerBuilder 클래스 봐 - 아웃 확인 build-helper-plugin

+0

감사합니다. 정확히 내가 필요로하는 것. 현상금을 더 며칠 더주고 미래에 대한 더 자세한 정보를 얻을 수 있는지 알아볼 것입니다. 그러나 모든 가능성이있는 두건 모두 당신 것입니다. – AedonEtLIRA

+0

개미가 당신을 위해 일한다면, 개미 작업을 한 번하면 이클립스 프로젝트에 빌더를 추가하십시오 (프로젝트 속성, 빌더, 개미 추가). 작업을 선택하고 실행시기를 제어하기위한 많은 옵션이 있습니다. 과거에는 하나의 디렉토리에서 변경 사항을 모니터링하여 개미 작업이 실행되도록 (자동으로 jsmin을 수행함) 이렇게 설정할 수있었습니다. – philwb

+0

맞아, 이클립스 빌더에 대한 정보를 포함하는 것을 잊어 버린 것 같다. 나는 그것을 완전을 위해 위에 덧붙였다. – jtoberon

0

ResourceBundle을 사용하여 키로 속성을 조회 할 수있는 개체를 만드는 것이 일반적입니다. Java Trail에서 ResourceBundle에 대해 알아볼 수 있습니다.

기본 아이디어는 .properties 확장자의 텍스트 파일을 가지고 있다는 것입니다. ResourceBundle 개체를 해당 파일로 가리 킵니다. 그런 다음 getString() 또는 getObject() 메서드를 사용하여 원하는 속성으로 키를 전달할 수 있습니다. 그게 전부입니다. 프로그램을 시작할 때 (또는 필요할 때까지) ResourceBundle을로드하면됩니다. 나는 희망

public String get(String aString) 
    {   
    String sVal = null; 

    try 
    { 
     sVal = (String)myProperties.getObject(aString); 
    } 
    catch (MissingResourceException e) 
    { 
     log.debug("Missing Property Value: "+aString); 
    } 

    return sVal; 
    } 

: 당신은 당신이 멤버 값으로 ResourceBundle을 가지고 클래스를 소유하고 만드는 경우

, 당신은 속성 값을 얻을 수있는 간단한 get() 방법을 가지고 다음과 같은 코드의 간단한 비트를 사용할 수 있습니다 유용합니다.

+0

고마워,하지만 내가 뭘 찾고 있어요. 자동으로 생성 된 인스턴스화 할 수없는 클래스가 리소스 파일의 키를 포함하도록 생성되어 자동으로 .java 파일이 만들어집니다. – AedonEtLIRA

+0

죄송합니다. 등록 정보 파일에서 읽으려고하는 것을 보았을 때 총을 약간 뛰어 넘었어야합니다.이를 수행하는 가장 좋은 방법은'ResourceBundle '이다. – Ruminator