OSGi 프로젝트의 의존성에 대처하는 방법과 그것들을 번들로 변환하는 방법을 보여주는 튜토리얼이 많이 있습니다. 1 일 이상 조사한 후에도 provided
범위의 종속성을 처리하는 방법을 찾지 못했습니다.OSGi의 "제공된"범위를 가진 의존성을 다루는 방법
예를 들어 설명해 드리겠습니다. 현재 Dropbox
(dropbox-core-sdk 3.0)을 사용 중이고 provided
범위의 두 가지 종속성 (com.google.android
및 javax.servlet
)이 있습니다. maven-bundle-plugin
또는 bnd
과 같은 기술을 사용하면 아티팩트 및 전 이적 종속성 만 다운로드합니다. 그러나 OSGi 컨테이너로 프로젝트를 가져 오려면 종속성을 제공해야합니다. 같은 내가 maven-bundle-plugin
내 pom.xml
을 사용하고
보이는 :
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId};singleton:=true</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<Export-Package>*</Export-Package>
<Embed-Transitive>true</Embed-Transitive>
<Embed-Dependency>*</Embed-Dependency>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
도 Embed-Dependency
경우 모든 것을 포함 말합니다 만 종속 + 이적 종속성 항아리에 있습니다. 그러나 제공된 범위의 항아리가 항아리에도 있어야합니다.
provided
범위의 종속성을 다운로드 할 수있는 방법이 있습니까? 그렇지 않다면이 상황을 어떻게 처리할까요?
David에게 답변 해 주셔서 감사합니다. 나는 방대한 양의 라이브러리와 모든 것에 대한 의존성 때문에 osgi로 시작하는 dropbox와 같은 매우 나쁜 api를 선택했다. 이러한 의존성을 모두 손으로 처리하는 것은 거의 불가능합니다. 그래서 저는 프로세스를 자동화하고 싶었습니다. –
필요한 항아리를 수동으로 다운로드하여 내 번들에 배치했지만 Android에도 수천 가지 종속성이 있습니다 (추이 + 제공됨). 나는 실제로 붙어 있고 더 멀리가는 방법을 모른다. –
Maven BND 전문가가 해결책을 게시 할 수 있습니다. 또 다른 접근법으로 Dropbox 프로젝트를 별도의 Java 프로세스로 실행하고 MQTT 또는 REST를 통해 Kura와 통신 할 수 있습니다. 이 접근 방식은 OSGi 아키텍처에 맞지 않는 애플리케이션에 사용되는 것으로 나타났습니다. –