2012-08-03 4 views
0

pax-exam을 사용하여 지금 osgi 장치 테스트를 실행하고 있습니다. 현재 진행중인 프로젝트에는 여러 하위 모듈과 번들 간의 종속성 관계가 있습니다. 현재, 내 프로젝트의 번들 버전은 x.x.x-SNAPSHOT입니다. 내가 테스트를 실행할 때pax-exam의 maven SNAPSHOT 종속성 업데이트 정책은 무엇입니까?

options.add(CoreOptions.mavenBundle().groupId("xxx.xxx").artifactId("xxx.xxxx.xxxx.xx").versionAsInProject()); 

는, 인원 내 스냅 종속성을 다시 다운로드, 내 지역의 repo에서 방출 종속성을 읽습니다 : 나는이 같은 팍스 - 시험 구성 옵션을 설정합니다. 정보를 다음과 같은 출력 :

[main] INFO org.ops4j.pax.scanner.internal.ProvisionServiceImpl - Scan bundles from [scan-bundle:mvn:commons-lang/commons-lang/2.6] 
[main] INFO org.ops4j.pax.scanner.internal.ProvisionServiceImpl - Scan bundles from [scan-bundle:mvn:xxx.xxx/xxx.xxx.xxx/[email protected]] 

보시다시피

는, pax는 자동 업데이트 스냅 종속성, 나는 의존성 업데이트 정책을 설정하지 않은 것입니다하더라도. 내 질문은 : 그 pax defult 행동인가? 이 동작을 변경하는 방법? SNAPSHOT 의존성을 자동으로 업데이트하고 싶지 않습니다.

답변

1

로그 메시지에 표시되는 @update 접미사는 Maven 스냅 샷 업데이트가 아닌 OSGi 번들 업데이트를 나타냅니다.

http://team.ops4j.org/wiki/display/paxscanner/Bundle+Scanner을 참조하십시오.

그건 그렇고, Pax Runner Container를 사용하고있는 것 같습니다. 네이티브 컨테이너는 일반적으로 더 쉽게 작업 할 수 있습니다.

0

Harald가 설명했듯이 Pax Runner 동작을 관찰하고 있습니다. 기본적으로 Pax Exam은 모든 실행에서 Clean Pax Runner 작업 폴더를 사용하기 때문에 항상 Maven 리포지토리 (로컬 또는 원격)의 모든 이슈를 업데이트합니다. 정확하게 작동하는 방법은 settings.xml을 사용하는 Pax Exam과 Runner의 특정 버전에 따라 다릅니다. 근년에 Pax URL의 기본 구현이 변경 되었기 때문에 컨텍스트를 설명하고 설정 (버전!)을 개선해야합니다.

여기에서 기꺼이 도움이 될 것입니다.

0

SNAPSHOT 업데이트 정책은 Pax보다 maven의 기능입니다. maven을 사용하여 SNAPSHOT을 다운로드하면 maven은 다운로드 한 종속성의 version 디렉토리에 xml 메타 데이터 파일을 생성합니다. 이 파일은 로컬 메이븐 저장소에 있습니다. 이 메타 데이터 파일에는 파일을 만든 날짜의 날짜 - 시간 스탬프가 포함됩니다. 의존성을 다시 해결하기 위해 갈 때, maven은 외부 저장소에서 사용할 수있는 SNAPSHOT의 날짜와 로컬 저장소의 날짜를 다시 비교하여 가장 최근에 사용 가능한 스냅 샷을 얻을 수 있도록합니다. 이 대답은 Pax보다 maven이 어떻게 작동하는지에 대한 것이지만, 스냅 샷과 관련하여 maven mojo가 어떻게 작동하는지 이해한다면 사용중인 PAX 버전이 그 기능을 업데이트하는 방법을 이해하는 데 도움이 될 것입니다.