2014-03-01 58 views
0

我有一個Jenkins構建服務器,當新提交已被推送到GitHub項目時,它會自動將項目構建到jar中。我看着詹金斯創造的文物大小,我感到很驚訝。我得出的結論是所有的第三方依賴包括罐子神器阻止Maven在構建的工件(jar)中包含依賴關係

我不需要Maven將它們包含在工件中,因爲它會顯着增加尺寸,並且它沒有用處。所以我擺弄我的pom.xml文件,但我無法得到它的工作。依賴關係仍然包含在jar中。

我對Maven比較陌生,如果有人能幫助我,我會很感激的!

源(如果需要的話):

+2

按照慣例,Maven不會將依賴添加到它創建的jar中。作爲一個起點,我會從計算機上運行'mvn clean install'項目,然後打開jar文件(它只是一個壓縮目錄),然後查看是否實際存在依賴關係。然後檢查由Jenkins創建的用於依賴關係的jar以隔離問題。 – Planky

+0

我沒有看到任何可以告訴它包含依賴關係的pom。 – Planky

+0

@Planky我已經運行了這個命令,它的依賴不包含在jar中。這是否意味着Jenkins以某種方式將它們添加進來? – Staartvin

回答

0

可避免通過提供他們應該被包裹在範圍包裝你的jar文件裏面你的依賴,但因爲我看着。你的pom.xml描述符並沒有發現任何錯誤的配置,我會建議使用maven-jar-plugin排除所有第三方庫,如下所示:

<project> 
... 
<build> 
<plugins> 
    ... 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>${maven-jar-plugin.version}</version> 
    <configuration> 
     <excludes> 
     <exclude>*.jar</exclude> 
     </excludes> 
    </configuration> 
    </plugin> 
    ... 
</plugins> 
</build> 
... 
</project> 

希望這會有所幫助。 BR。

+0

非常感謝,解決了這個問題! – Staartvin

0

我的猜測是,這是根本原因:

<resource> 
    <directory>libs</directory> 
    <excludes> 
<exclude>**/*.java</exclude> 
    </excludes> 
</resource> 

,如果你(也)有此文件夾中所有的罐子,那麼他們將結束在類路徑(見target/classes),因此,他們會成爲罐子的一部分。 你只需要指定jar作爲依賴項,Maven就可以完成剩下的工作。 資源用於非Java(或不可編譯)文件,這些文件最終也應該在類路徑中,比如Spring或Hibernate的配置文件

相關問題