OSGI:捆绑、class 继承和 Maven 作用域
OSGI: bundles, class inheritance and maven scope
我有三个 maven 项目作为三个 osgi 包(即一个项目是一个包)。我有三个 classes - 每个包中有一个 class。
Project/Bundle 1:
class A{}
pom:
Project/Bundle 2:
class B extends A{}
pom:
<dependency>
<groupId>com.company</groupId>
<artifactId>project1</artifactId>
<version>1.0.0</version>
<scope>provided</scope>
</dependency>
Project/Bundle 3
class C extends B{}
pom:
<dependency>
<groupId>com.company</groupId>
<artifactId>project2</artifactId>
<version>1.0.0</version>
<scope>provided</scope>
</dependency>
为什么我在编译 project3 时出现 class A 无法访问的异常?仅将project1添加为project 3的依赖,问题就解决了。但是,为什么呢?
这是因为提供的范围。它破坏了传递查找。
我有三个 maven 项目作为三个 osgi 包(即一个项目是一个包)。我有三个 classes - 每个包中有一个 class。
Project/Bundle 1:
class A{}
pom:
Project/Bundle 2:
class B extends A{}
pom:
<dependency>
<groupId>com.company</groupId>
<artifactId>project1</artifactId>
<version>1.0.0</version>
<scope>provided</scope>
</dependency>
Project/Bundle 3
class C extends B{}
pom:
<dependency>
<groupId>com.company</groupId>
<artifactId>project2</artifactId>
<version>1.0.0</version>
<scope>provided</scope>
</dependency>
为什么我在编译 project3 时出现 class A 无法访问的异常?仅将project1添加为project 3的依赖,问题就解决了。但是,为什么呢?
这是因为提供的范围。它破坏了传递查找。