我写了使用第三方库的应用程序。然后我已打包这与使用行家组装-插件(产生具有所有依赖性包括一些第三方罐的罐)的可执行罐子。

接下来,我需要这个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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top