2014-01-19 10 views
8

버전을 2.3.5에서 2.4.0으로 mvn clean install으로 실행하면 몇 가지 경고 메시지가 출력됩니다. 예 :Maven Bundle Plugin : 내보내기가 비공개 참조

Export ch.entwine.weblounge.contentrepository.impl.index, has 1, private references [org.elasticsearch.action.bulk]

나는이 내장 된 LIB (elasticsearch) 함께 할 수있는 뭔가가 같아요. 다음은 POM의 일부입니다.

<dependencies> 
    ... 
    <dependency> 
    <groupId>org.elasticsearch</groupId> 
    <artifactId>elasticsearch</artifactId> 
    <version>0.19.9</version> 
    </dependency> 
    ... 
</dependencies 
... 
<Export-Package> 
    ... 
    ch.entwine.weblounge.contentrepository.impl.index 
    ... 
</Export-Package> 
<Embed-Dependency> 
    .... 
    elasticsearch;inline=true 
    ... 
</Embed-Dependency> 

오류 메시지의 의미는 무엇입니까? 이러한 문제를 해결하기위한 권장 방법은 무엇입니까?

답변

10

그 메시지는 공개 패키지 중 하나 (내 보낸)에 개인 패키지에있는 클래스 (내 보내지 않은 패키지)에 액세스하고 있음을 의미합니다.

jar를 포함 할 때 Embedded-jar에서 패키지를 선언하려면 Export-Package를 사용하지 않아야합니다. 그것은 당신이 자신의 번들로부터 패키지를 선언하기위한 것이다. org.elasticsearch.action.bulk를 내보내려면 < _exportcontents>를 사용해야합니다.

+0

답변 해 주셔서 감사합니다. 하지만 필자는 항상 임베디드 종속성의 패키지를 내 보내서는 안된다고 생각하고있었습니다 (번들 API의 일부가 아님). 내가 틀렸어? – Basil

+0

음, 그게 달렸어 ... 항아리를 포함하는 경우 그것은 번들로 존재하지 않으므로 항아리를 "제공됨"으로 설정할 수 없습니다. 따라서 공개 메소드에 필요한 클래스가 포함 된 모든 패키지를 내보내는 것이 가장 좋습니다. 이 메시지는 일반적으로 향후 클래스로드 문제를 나타냅니다. – Cristiano