建设广口瓶中,在Eclipse的PDE可以用吗?
题
我写了使用第三方库的应用程序。然后我已打包这与使用行家组装-插件(产生具有所有依赖性包括一些第三方罐的罐)的可执行罐子。
接下来,我需要这个jar添加到PDE的项目,所以它可以从日食推出。但是,为了使这项工作,我需要一些thirs方依赖的增加,其已经位于包装罐子我PDE项目。所以,我得到重复的依赖。如何避免这种情况的任何想法?或建议的文件,描述如何做得好?
解决方案
您应该建立一个罐子里,这是一个OSGi包:所以它包含了插件ID和版本号所需的MANIFEST.MF(这不会改变的事实,那罐子仍然可执行文件)。小心添加出口封装选项,以供其它插件代码/捆绑为好。
这之后你可以安装这个罐子到由PDE项目中使用的目标平台(搜索在喜好目标平台),因此它由ID变为可用于其他插件(你可以把它作为一个依赖)
这样,如果至少一个插件需要你的罐子,它就会被加载,但将不会加载几次。
其他提示
我觉得这只是普通的不好的做法,包括在你的罐子其他罐子。但是,如果你想保持这种状态,怎么样从一个构建创建两个罐子:一个满有依赖关系,和一个简单的一个使用PDE(只使用多个执行在组装插件)
我现在使用的行家束-插件:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>1.4.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${pom.groupId}.${pom.artifactId}</Bundle-SymbolicName>
<Bundle-Name>${pom.name}</Bundle-Name>
<Bundle-Version>${pom.version}</Bundle-Version>
<Bundle-Activator>org.wso2.mbp.sample01.Activator</Bundle-Activator>
<Private-Package>org.wso2.mbp.sample01</Private-Package>
</instructions>
</configuration>
</plugin>
http://felix.apache.org /site/apache-felix-maven-bundle-plugin-bnd.html
构建束。但是,我怎么使用捆绑插件,所以它创造了罐子构建与Maven的组装插件,我用像清单文件:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>true</appendAssemblyId>
<finalName>myApp</finalName>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.TestMain</mainClass>
<packageName>com.</packageName>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
不隶属于 StackOverflow