2010-06-10 71 views
0

我寫了一個使用第三方庫的應用程序。然後,我使用maven-assembly-plugin(生成一個包含一些第三方jar的所有依賴關係的jar)將它打包爲一個可執行的jar。構建一個用於eclipse PDE的jar?

接下來,我需要將此jar添加到PDE項目,以便它可以從eclipse啓動。但爲了做到這一點,我需要將一些thirs-party依賴項添加到已經位於打包jar中的PDE項目中。所以我得到重複的依賴關係。任何想法如何避免這種情況?或者對文檔描述如何正確完成的建議?

回答

1

你應該建立一個jar,這是一個OSGi包:所以它包含了所需的manifest.mf,並帶有一個插件ID和一個版本號(這不會改變事實,jar仍然可執行)。請注意添加export-packages選項以使代碼可用於其他插件/軟件包。

之後,您可以將此jar安裝到PDE項目使用的目標平臺中(在首選項中搜索Target平臺),以便其可通過該ID將其用於其他插件(您可以將其添加爲依賴項)。

這樣,如果至少有一個插件需要你的jar,它會被加載,但不會被加載多次。

0

我認爲在你的jar包中包含其他jar是一種普通的壞習慣。但如果你想保持這種方式,如何從一個版本創建兩個罐子:一個完整​​的依賴和一個簡單的PDE(在彙編插件中使用多個執行)

0

我現在用行家束-插件:

 <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

建立一個包。但是,如何使用bundle插件,以便使用maven-assembly-plugin創建jar文件的MANIFEST文件,我使用該插件:

<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> 
<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> 
相關問題