2013-08-06 8 views
3

p2에는 p2 저장소의 내용에 대한 쿼리를 실행할 수있는 query languange이 있습니다. 그러나 documentation의 모든 예제는 쿼리 언어가 Java 내에서 사용되는 것으로 가정합니다.p2 query languange를 사용하여 p2 저장소에서 단위를 찾는 명령 줄

IQuery<IInstallableUnit> q = QueryUtil.createMatchQuery("this.id == $0", id); 
metadataRepository.query(q); 

내 Java 응용 프로그램을 작성하지 않고 명령 줄에서 쿼리를 실행하려면 어떻게해야합니까?

답변

3

p2 director application에는 주어진 p2 저장소의 내용을 나열하거나 쿼리 할 수있는 옵션이 있습니다. -list을 사용하면 모든 단위를 얻을 수 있으며 -list Q:<p2 QL collection query>을 사용하면 하위 집합을 쿼리 할 수 ​​있습니다.

식은 컬렉션 쿼리 여야하기 때문에 위의 예제에서 match 쿼리 대신 동등한 컬렉션 쿼리를 사용해야합니다. 또한 $1과 같은 자리 표시자는 실제 값으로 대체되어야합니다.

예 : 주노 릴리스 트레인 저장소의 모든 org.eclipse.sdk.ide 단위를 찾기 위해 명령 줄

eclipse -application org.eclipse.equinox.p2.director \ 
    -repository http://download.eclipse.org/releases/juno \ 
    -list 'Q:everything.select(x | x.id == "org.eclipse.sdk.ide")' 

가 더 유용 예를 들어, 당신이 표시되는 모든 단위를 찾으려면이 명령을 사용할 수있을 것 P2 카드 사용자 인터페이스의 범주 (I 큰 저장소를 시도하지 것이지만, 쿼리는 매우 느린 것 같다) : 이안 불에 의해 작성

eclipse -application org.eclipse.equinox.p2.director \ 
    -repository <URL of some small repository> \ 
    -list 'Q:everything.select(y | everything.select(x | x.properties ~= filter("(org.eclipse.equinox.p2.type.category=true)")).collect(x | x.requirements).flatten().exists(r | y ~= r))' 
0

p2diff 도구입니다 언급 할 가치가있다. 그의 article은 p2 API에 대한 개요를 제공하고 p2 API와 함께 작동해야하는 몇 가지 주요 개념을 소개합니다.