2009-10-20 6 views
8

Struts가 웹 애플리케이션으로 인식 할 수 있도록 WAR 패키지 구조로 OSGi 번들 중 하나를 배포하려고합니다. Maven을 사용하기 때문에 WAR 패키지가 내장되어 있고 Maven 번들 플러그인이있어 OSGi 호환 매니페스트를 만들 수 있습니다.Maven에서 WAR 패키징과 OSGi 번들 생성을 결합하려면 어떻게해야합니까?

문제는, 두 사람이 함께 작동하지 않는, 그래서 번들 플러그인 클래스 파일이 하위 폴더 classes/에 지금과 번들로 항아리가 lib/에 있다는 것을 인식하지 못하는, 그래서 잘못된 Bundle-classpath 헤더를 생성합니다. 내 pom.xml에 올바른 헤더를 수동으로 추가 할 수는 있지만 자동 응답은 필요하지 않습니다. 어떻게해야합니까?

+0

[Maven Web Project with Apache Felix Plugin] (https://stackoverflow.com/questions/19272627/maven-web-project-with-apache-felix-plugin)의 가능한 복제물 – bigbadmouse

답변

18

이것을 달성하기위한 한 가지 방법은 OPS4J Wiki 페이지 ("Getting the benefits of maven-bundle-plugin in other project types")에 설명되어 있습니다.

pom.xml의 종속성 포함 및 Bundle-ClassPath 지시어를 WAR 플러그인에서 사용하는 위치와 일치하도록 구성 할 수 있습니다. maven-bundle-plugin은 올바른 manifest 헤더를 생성합니다. 다음과 같을 수 받는다는 - 번들 플러그인에 대한

지침 :

<instructions> 
    <Bundle-ClassPath>.,WEB-INF/classes,{maven-dependencies}</Bundle-ClassPath> 

    <Embed-Directory>WEB-INF/lib</Embed-Directory> 
    <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency> 
    <Embed-Transitive>true</Embed-Transitive> 
    <!-- ... --> 
</instructions> 

ETA :이 방법을 사용하는 경우, 나는이 주목할 것을 발견 :

  • 을 번들 플러그인은 WEB-INF 디렉토리가 누락되었다고 불평 할 것입니다. 왜냐하면 매니페스트 목표가 실행될 때 war 플러그인이 아직 그것들을 생성하지 않았기 때문입니다 (단지 la
  • Bundle-ClassPath 지시문 에 "."을 포함해야합니다. 그렇지 않으면 번들 플러그인이 Import-Packages 헤더를 엉망으로 만듭니다. Google을 통해 일부 JIRA 문제에서이 문제를 발견했지만 더 이상 URL을 찾을 수 없습니다.

그 외의 경우에는 정상적으로 작동합니다.

+0

+1'{maven- 의존성}'(http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html#ApacheFelixMavenBundlePlugin%28BND%29-Embeddingdependencies 참조) –

+0

좋습니다. 나는 일종의 이것을 알고 있었지만 전에는'Embed-Directory' 지시어를 보지 못했습니다. –

-1

OP는 자신이 발견 한 답변을이 동일한 질문에 게시 했으므로 this answer을 발견 할 수 있습니다.

그는 웹 스타일 콘텐츠를 포함하는 솔루션을 제공합니다.

+2

솔루션에 대한 링크는 환영하지만, 답변이 없으면 답이 유용하다는 것을 명심하십시오. (링크 주변에 문맥을 추가하십시오.) (// meta.stackexchange.com/a/8259) 동료 사용자는 그것이 무엇인지 알게 될 것입니다 그리고 왜 그곳에 있는지, 그리고 목표 페이지를 사용할 수 없을 때 당신이 링크하고있는 페이지의 가장 중요한 부분을 인용하십시오. [링크 이상의 답변은 삭제 될 수 있습니다.] (// stackoverflow.com/help/deleted-answers) – Bugs

+0

그거 알아? 나는 앞으로는 신경 쓰지 않을 것입니다. 도움을 청하고 아무것도 돌려주지 않고서 내가 기여한 것에 대한 열정은 오늘 완전히 증발했습니다. – bigbadmouse

+0

어떻게 그렇게됩니까? 누군가가 개선을위한 간단한 요청을했기 때문에 모든 것을 버리면 열정이 그렇게 좋아 보이지 않습니다.고품질 답변에 관심이 있습니까? 이 문제를 다시 생각해 볼 수도 있습니다. – Floern

관련 문제