距离上一次写ServiceMix相关内容已经有一个月的时间了,在这段时间里为一个ServiceMix下的项目进行了测试,同时也学习了一些ServiceMix的相关内容。相比之下,比较重要的内容还有configurationadmin,spring dm等,但是这里先解决前面留下的一个问题,就是在ServiceMix下的包需要遵循什么样的条件。
首先,取项目中的pom.xml的一段内容:
<build>
<plugins>
<plugin>
<groupId>*</groupId>
<artifactId>*</artifactId>
<version>2.3.4</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-Name>${project.artifactId}</Bundle-Name>
<Bundle-Description>${project.description}</Bundle-Description>
<Import-Package>
*
</Import-Package>
<Private-Package>*</Private-Package>
</instructions>
</configuration>
</plugin>
<plugin>
<groupId>*</groupId>
<artifactId>*</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<goals>
<goal>generate-features-xml</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
这里有部分内容用*代替了,作为一个实习生,不知道哪些内容是可以透露的。项目是使用Maven来生成的,可以看出是作为一个Plugin存在,所以应该也可以通过Eclpise建立plugin来完成包的创建。
首先,取项目中的pom.xml的一段内容:
<build>
<plugins>
<plugin>
<groupId>*</groupId>
<artifactId>*</artifactId>
<version>2.3.4</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-Name>${project.artifactId}</Bundle-Name>
<Bundle-Description>${project.description}</Bundle-Description>
<Import-Package>
*
</Import-Package>
<Private-Package>*</Private-Package>
</instructions>
</configuration>
</plugin>
<plugin>
<groupId>*</groupId>
<artifactId>*</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<goals>
<goal>generate-features-xml</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
这里有部分内容用*代替了,作为一个实习生,不知道哪些内容是可以透露的。项目是使用Maven来生成的,可以看出是作为一个Plugin存在,所以应该也可以通过Eclpise建立plugin来完成包的创建。
这是一个bundle的结构,最上层是包的名字。META-INF下的maven目录内有pom文件。最重要的内容在spring目录下的Manifest.mf文件中。
以下是一个完整的manifest.mf文件:
Manifest-Version: 1.0
Export-Package: 。。。。。。
Export-Package: 。。。。。。
Implementation-Title:
Implementation-Version: 0.0.1
Built-By:
Built-By:
Tool: Bnd-0.0.357
Bundle-Name:
Created-By: Apache Maven Bundle Plugin
DynamicImport-Package: *
Build-Jdk: 1.6.0_22
Bundle-Version: 0.0.1
Bnd-LastModified: 1312945778209
Bundle-ManifestVersion: 2
Bundle-Description:
Bundle-Name:
Created-By: Apache Maven Bundle Plugin
DynamicImport-Package: *
Build-Jdk: 1.6.0_22
Bundle-Version: 0.0.1
Bnd-LastModified: 1312945778209
Bundle-ManifestVersion: 2
Bundle-Description:
Bundle-SymbolicName:
Import-Package: 。。。。
其中最重要的两个内容是Export-Package和Import-Package,主要目的是指出这个bundle对外开放了哪些包和需要引用到哪些包。
bundles之间的引用主要就是通过这种方法来完成。当然,也有更高级的方式来完成这些功能,比如说使用springdm,由于学习不精,所以目前还没有能力对其进行说明。