2012-02-24 54 views
2

在開發applet時,我創建了一個帶有.jar包裝和不同.jar依賴關係的maven項目。現在我想添加一個檔案索引(/META-INF/INDEX.LIST)到我的項目的jar中,該jar不僅包含這個jar的條目,還包含也是所有依賴jar的條目的條目。將依賴jar條目添加到jar索引(/META-INF/INDEX.LIST)

隨着jar命令行工具,我用

>罐子實現它,我myproject.jar dependency1.jar dependency2.jar ...

使用行家的行家檔案索引標誌罐子,插件只爲myproject.jar條目出現在存檔指數,依賴罐子不是這樣的條目:

... 
    <plugin> 
    <artifactId>maven-jar-plugin</artifactId> 
    <configuration> 
     <archive> 
     <index>true</index> 
     </archive> 
    </configuration> 
    </plugin> 
    ... 

是否有公司的可能性使用maven將索引文件中的依賴條目拖放到索引文件中?

感謝您的任何提示...

+0

你是如何定義的依賴關係? (範圍?) – khmarbaise 2012-02-24 11:55:00

+0

<依賴性> 的junit 的junit 3.8.1 測試 \t test.company \t 小應用程序核心 \t 1.1 \t Peter 2012-02-24 12:01:57

+0

您只能在類路徑(MANIFEST.MF)文件中看到applet-core工件。 – khmarbaise 2012-02-24 12:12:29

回答

2

我終於用下面的配置解決它:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <configuration> 
     <archive> 
     <index>true</index> 
     <manifest> 
      <addClasspath>true</addClasspath> 
     </manifest> 
     </archive> 
    </configuration> 
    </plugin> 

利用這種配置,所有jar文件(項目和依賴)是在MANIFEST.MF的類路徑和他們的作品上市(在目錄級文件和包名稱根據jar索引doc)將發生在INDEX.LIST

說明#1:同時使用索引addManifest現有版本2.4導致在http://jira.codehaus.org/browse/MJAR-69描述的錯誤。所以一定要使用Maven-jar-plugin的2.4版本。

注2:由於http://jira.codehaus.org/browse/MNGECLIPSE-1219描述的錯誤,如果將依賴使用解析工作空間僞影(Eclipse的運行配置的選項)解決既不MANIFEST.MF也不發生INDEX.LIST依賴性。因此,確保您a)首先安裝/部署所有依賴項,並且b)在使用eclipse構建項目之前,必要時禁用解決工作區工件選項(或者在eclipse中關閉依賴項目)。

注3:不要在同時使用JAR-與依賴性(Maven的組裝插件)和addClasspath(Maven的JAR-插件),否則你會加倍的所有條目產生的罐子。

注4:化java 罐子命令行工具不還評價MANIFEST.MF的類路徑(除了援引在我最初的例子所示的工具時jar文件明確上市),看到的指數例子jar doc

由於需要注意#2,我將調查到Ant的罐子 ...

非常感謝@khmarbaise指着我正確的方向:-)

0

你知道,因爲它僅包含類,但不依賴這不是INDEX.LIST文件的一部分。依賴關係應該位於MANIFEST.MF文件中(而據我所知)。

根據Maven,您不會將該信息獲取到INDEX.LIST文件中。您可以爲此使用MANIFEST.MF文件。

+0

INDEX.LIST包含JAR(依賴關係)的列表以及關於JAR包含哪些類的信息 – 2012-02-24 12:07:46