2017-09-08 13 views
0

안녕하세요. 제 3 자 라이브러리를 추가하기 위해 https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/adding-third-party-libraries-to-a-module#embedding-libraries-in-a-module 문서를 따랐습니다. 생성 된 번들에는 build.gradle에 구성된 모든 종속성이있는 lib 디렉토리가 있습니다. 번들을 배포하면 번들의 상태가 설치됩니다. 나는이 내가 build.gradle 구성 나의 종속 항아리의 위해도 이적 종속되지 않습니다 아래의 오류Liferay Dxp 번들에 외부 종속성을 번들로 포함하는 문제

org.osgi.framework.BundleException: Could not resolve module: com.test..api [564] 
    Unresolved requirement: Import-Package: com.ibm.wsdl.extensions.soap 

을 얻고 번들을 시작하려고하면 당신이 날이 문제를 해결하는 데 도움 주실 래요 .

답변

0

이제 내 번들을 시작할 수 있습니다.

build.gradle 파일의 종속성을 구성하고 gradle을 새로 고치면 gradle은 모든 종속성 (전이 종속성 포함)을 다운로드합니다. 문제는 이러한 전이 의존성 때문입니다. Gradle이 모든 전이 의존성을 다운로드하지 않습니다. 단지 몇 개의 병이 없기 때문에 build.gradle에서 누락 된 병을 다시 구성하고 그라데이션을 새로 고쳐야합니다. , build.gradle에

구성 종속성을 Gradle을 새로 고침 및 배포를 수행

해결책은 누락 된 항아리를 찾을 수 있습니다. gogo 쉘로 가서 묶음을 확인하십시오. 번들이 배포되고 설치 상태가됩니다. gogo 쉘에서 번들을 시작하십시오. 이제 Unresolved requirement:Import-Package: com.poi.extractor Google 패키지와 유사한 오류가 발생하고 Maven 저장소에서 각각의 jar를 찾으십시오. build.gradle에서 새 jar를 구성하십시오. 번들이 활성화 될 때까지 동일한 프로세스를 계속하십시오.

0

OSGi 모듈에 모든 타사 종속성을 포함시키기 위해 아래 build.grade 스크립트를 수동으로 추가하는 대신 다음 스크립트를 하나씩 추가하십시오.

bundle { 
def runtime = project.configurations.runtime 
runtime.resolve() 
instruction 'Bundle-ClassPath', '.' 
instruction 'Bundle-Activator', 'com.XXX.XXXXX.XXXX.ClassName' 
runtime.resolvedConfiguration.resolvedArtifacts.each { 
    def resrc = it.moduleVersion.id.name + '-' + 
      it.moduleVersion.id.version + '.jar'  
    instruction 'Bundle-ClassPath', 'META-INF/lib/' + resrc 
    instruction '-includeresource', 'META-INF/lib/' + resrc + '=' + it.file.path 
    } 
}