2014-01-22 2 views
0

저는 몇 주 동안 maven 및 osgi를 다루었으며 여전히 의존성 및 번들/패키지/플러그인과 관련하여 혼란스러워합니다. 주로 나는 그들이 무엇인지 이해할 수 없다. 왜냐하면 나는 자바와 osgi/maven 모두에게 새로운 것이기 때문에 그것들이 어떻게 연결되어 있는지 혹은 다른 것들의 일부인지를 시각화하기가 어렵다. 너무 애매하게해서는 안되기 때문에 많은 질문을하십시오.maven, osgi 및 eclipse에 대한 혼란

1) 나는 번들과 플러그인이 동일한 것임을 이해하므로 - 그냥 다른 이름입니다. 패키지도 똑같은가요? "import-package 또는 require-bundle을 사용해야합니까?"라는 주제에 대한 많은 논쟁이 있었지만 패키지 나 번들이 무엇인지 이해하기 전에 이해할 수 없습니다.

2) Dependencys.

<dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.7.5</version> 
    </dependency> 

하지만 실제로 무엇을 의미 않습니다 : 내가 SLF4J API를 사용하려는 경우 예를 들어, 나는이 종속성을 추가? 의존성을 추가하면 slf4j를 사용할 수 있다는 것을 이해합니다. 내가 "물건"메신저에 의존하는 것만으로도 Maven 저장소의 어딘가에 컴파일 된 프로젝트 (예 : 내가 로컬로 만드는 프로젝트)라고 가정 할 수 있습니까?

3) Osgi 번들. 내 이전 개념이 옳다면 (dependencys는 프로젝트와 비슷 함) 프로젝트 아래에 패키지와 같은 번들이 있습니까? 그렇다면 하나의 종속성이 여러 osgi 플러그인을 추가 할 가능성을 추가한다고 가정합니다. 그렇다면 어디서 어떤 의존성이 어떤 수입을 사용할 수 있는지 알 수 있습니다. 나는 임포트 패키지에서 작성한 이름이 항상 의존성에서 같지 않다는 것을 알아 차렸기 때문에 이것을 묻습니다.

4) Eclipse에서 osgi 구성을 시작할 때 플러그인을 선택해야합니다. 내가 타겟 플랫폼 아래에서 선택할 수있는 일부가 있고 내가 매니 페스트에서 가져온 모든 플러그인을 선택해야한다는 것을 이해합니다. 이 대상 플랫폼은 무엇이며 해당 플러그인은 어디에 있습니까?

이들은 길고 (아마도 어리석은 질문이기 때문에) 정말 도움이됩니다. 감사! :)

답변

2

가장 중요한 것은 메이븐과은 OSGi는 완전히 다른 역할을 가지고있다. javac 컴파일러를 사용하여 코드를 컴파일하고 결과를 디스크의 번들 (jar 파일)로 어셈블하는 작업은 다음과 같습니다. Maven이 코드를 실행하지 않습니다. 코드.

OSGi는 런타임 모듈러 프레임 워크입니다. 메이븐 (Maven)이나 다른 빌드 시스템에 의해 빌드 된 번들 파일을 가져 와서 실행할 프레임 워크를 생성합니다.OSGi는 번들을 만드는 방법을 알려주지는 않지만 사용하는 빌드 도구가 만족해야하는 내용에 제약을가합니다.

이제 특정 질문에 대한 답변 :

  1. A "를 플러그 인"번들에 대한 이클립스 용어입니다. 이것은 Eclipse가 버전 3 이전의 OSGi와 다른 모듈 시스템을 사용했기 때문에 발생했습니다. 이제는 똑같습니다. 패키지는 동일한 것은 아니며 Java 소스 파일의 맨 위에 놓는 패키지 선언과 같은 Java 패키지입니다. 일반적으로 번들에는 하나 이상의 패키지가 포함됩니다.

  2. Maven pom.xml의 종속성은 코드를 컴파일 할 때 지정된 jar 파일이 javac 컴파일러에 표시된다는 것을 의미합니다. Maven은 빌드 도구이므로 빌드 타임 종속성 만 지정합니다. org.slf4j.Logger과 같이 Java 소스에서 기호를 사용하는 경우 javac 컴파일러는 classpath에서 해당 기호를 찾아야하기 때문에 필요합니다. 그렇지 않으면 코드 컴파일이 실패합니다.

  3. OSGi 번들은 빌드 프로세스의 출력과 런타임 OSGi 프레임 워크가로드 한 물리적 모듈입니다. 기본적으로 번들은 단지 META-INF/MANIFEST.MF에 OSGi 고유 항목이있는 jar 파일입니다. 파일이기 때문에 저장하거나, 옮기거나, 응용 프로그램에 배포 할 수 있습니다. OSGi는이 파일을로드하고 번들의 내용을 캡슐화하는 런타임 모듈을 만듭니다. 전체 응용 프로그램은 일반적으로 여러 번들로 구성됩니다.

  4. OSGi 응용 프로그램을 실행하려면 OSGi에 포함시킬 번들을 지정해야합니다. 선택한 번들 조합으로 인해 응용 프로그램이 나타납니다. 대상 플랫폼은 구축 된 번들 저장소의 일종이며 사용자가 직접 작성한 번들과 타사 번들을 모두 포함합니다. slf4j와 같은 라이브러리. 대상 플랫폼의 내용은 Eclipse의 환경 설정 대화 상자를 사용하여 구성됩니다.

1

먼저 개별적으로 배우는 것이 좋습니다. Maven과 OSGi를 독립적으로 사용할 수 있습니다. OSGi는 여러 가지 구현을 가지고 있고 Equinox는 Eclipse에서 나온 것입니다.

1 - OSGi에는 번들이 있으므로 이클립스는 플러그인을 그렇게 똑같은 것으로 호출합니다. 패키지는 자바 패키지입니다.

2 - 종속성은 개념입니다. 여기서 읽을 수 있습니다 : http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

3 - 번들은 OSGi 아티팩트입니다. 기본적으로 speical manifest가있는 jar 파일입니다.

4 - 시작할 때 OSGi에게로드하려는 jar 파일을 알려줘야합니다. speical manifest는 OSGi에게 앱을 초기화하는 방법을 알려주는 지시어를 가지고있다.

희망이 있습니다.

메이븐 빌드 도구입니다 기억

관련 문제