2017-04-15 9 views
0

maven을 통해 내 번들을 OSGi에 배포하려고하면 설치된 상태로 표시됩니다. My Project는 멀티 모듈이므로 두 개의 번들이 있습니다. 내가 태그 라이브러리 번들에서 본 것은 :번들에 해결되지 않은 제약

org.apache.felix.shell from org.apache.felix.shell (292) 
org.apache.jackrabbit.api,version=[2.3,3) from org.apache.jackrabbit.jackrabbit-api (65) 
org.apache.jackrabbit.api.jsr283.security -- Cannot be resolved 
org.apache.jackrabbit.api.security,version=[2.3,3) from org.apache.jackrabbit.jackrabbit-api (65) 
org.apache.jackrabbit.api.security.principal,version=[2.3,3) from org.apache.jackrabbit.jackrabbit-api (65) 
org.apache.jackrabbit.api.security.user,version=[2.3,3) from org.apache.jackrabbit.jackrabbit-api (65) 

로그를 확인 후, 나는 아래 참조 :

14.04.2017 17:23:03.330 *ERROR* [FelixDispatchQueue] com.abc.MyPrj-services FrameworkEvent ERROR (org.osgi.framework.BundleException: Unresolved constraint in bundle com.abc.MyPrj-services [290]: Unable to resolve 290.0: missing requirement [290.0] osgi.wiring.package; (osgi.wiring.package=org.apache.jackrabbit.api.jsr283.security)) org.osgi.framework.BundleException: Unresolved constraint in bundle com.abc.MyPrj-services [290]: Unable to resolve 290.0: missing requirement [290.0] osgi.wiring.package; (osgi.wiring.package=org.apache.jackrabbit.api.jsr283.security) 
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3896) 
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1938) 
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1261) 
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:298) 
    at java.lang.Thread.run(Thread.java:745) 

내가 두 모듈의 태그 라이브러리에 의존성 아래 서비스를 추가했습니다.

<plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <extensions>true</extensions> 
       <configuration> 
        <instructions> 
         <Export-Package> 
          com.mypkg.gwms.ra.tags.*;version=${project.version} 
         </Export-Package> 
         <Import-Package> 
          com.adobe.granite.*, 
          com.day.*, 
          javax.*, 
          org.apache.commons.*, 
          org.apache.sling.*, 
          org.apache.tika.*, 
          org.osgi.*, 
          org.w3c.dom.*, 
          org.xml.sax.*, 
          org.slf4j.*, 
          org.apache.felix.shell.*, 
          org.apache.jackrabbit.*, 
         </Import-Package> 
         <Include-Resource> 
          META-INF/${project.artifactId}-${project.version}.tld=${project.build.outputDirectory}/META-INF/${project.artifactId}-${project.version}.tld, 
          {maven-resources}, 
          {maven-dependencies} 
         </Include-Resource> 
         <Sling-Bundle-Resources> 
          /META-INF/tags 
         </Sling-Bundle-Resources> 
        </instructions> 
       </configuration> 
      </plugin> 

감사합니다,

+0

어떤 버전의 aem? – awd

+0

CQ5.6, 그리고 그 때문이라고 생각합니다. 나는 compile 에러를 내고있는 org.apache.jackrabbit.api.security.JackrabbitAccessControlList 문을 가지고있다. 그러므로 나는 jackrabbit API 의존성을 추가했다. 그 빌드가 성공한 후, 그러나 org.apache.jackrabbit.api.jsr283.security - 해결할 수 없습니다 해결되지 않았습니다. –

답변

0

동일한 API의 두 가지 종속성이 필요하지만 다른 버전이 필요했습니다. 최신 모듈이 서비스 모듈에서 사용되었습니다. 다른 모듈 taglib가 해결할 동일한 종속성의 이전 버전을 찾고있었습니다 org.apache.jackrabbit.api.jsr283.security

이 문제를 해결하기 위해 pom.xml에 아래 명령문을 추가했습니다.

<Import-Package> 
org.apache.jackrabbit.*;version=1.6.1 
</Import-Package> 

가져 오기 1.6.1 버전 만. 그게 효과가있어.

0

오류가 당신은 또한 패키지 org.apache.jackrabbit.api.jsr283.security을 제공하는 번들을 설치할 필요가 있음을 알려줍니다 :

<dependency> 
      <groupId>org.apache.jackrabbit</groupId> 
      <artifactId>jackrabbit-api</artifactId> 
      <version>2.5.2</version> 
      <scope>provided</scope> 
     </dependency> 

다음은 태그 라이브러리 모듈의 치어입니다.

이 패키지를 내 보내면 번들의 매니페스트를 체크 인 할 수 있습니다.

0

org.apache.jackrabbit.api.jsr283.security 패키지가 포함 된 번들을 설치하고 osgi 컨테이너로 내 보내야합니다.