我有一個Jenkins構建服務器,當新提交已被推送到GitHub項目時,它會自動將項目構建到jar中。我看着詹金斯創造的文物大小,我感到很驚訝。我得出的結論是所有的第三方依賴包括罐子神器!阻止Maven在構建的工件(jar)中包含依賴關係
我不需要Maven將它們包含在工件中,因爲它會顯着增加尺寸,並且它沒有用處。所以我擺弄我的pom.xml文件,但我無法得到它的工作。依賴關係仍然包含在jar中。
我對Maven比較陌生,如果有人能幫助我,我會很感激的!
源(如果需要的話):
我有一個Jenkins構建服務器,當新提交已被推送到GitHub項目時,它會自動將項目構建到jar中。我看着詹金斯創造的文物大小,我感到很驚訝。我得出的結論是所有的第三方依賴包括罐子神器!阻止Maven在構建的工件(jar)中包含依賴關係
我不需要Maven將它們包含在工件中,因爲它會顯着增加尺寸,並且它沒有用處。所以我擺弄我的pom.xml文件,但我無法得到它的工作。依賴關係仍然包含在jar中。
我對Maven比較陌生,如果有人能幫助我,我會很感激的!
源(如果需要的話):
可避免通過提供他們應該被包裹在範圍包裝你的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。
非常感謝,解決了這個問題! – Staartvin
我的猜測是,這是根本原因:
<resource>
<directory>libs</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
,如果你(也)有此文件夾中所有的罐子,那麼他們將結束在類路徑(見target/classes
),因此,他們會成爲罐子的一部分。 你只需要指定jar作爲依賴項,Maven就可以完成剩下的工作。 資源用於非Java(或不可編譯)文件,這些文件最終也應該在類路徑中,比如Spring或Hibernate的配置文件
按照慣例,Maven不會將依賴添加到它創建的jar中。作爲一個起點,我會從計算機上運行'mvn clean install'項目,然後打開jar文件(它只是一個壓縮目錄),然後查看是否實際存在依賴關係。然後檢查由Jenkins創建的用於依賴關係的jar以隔離問題。 – Planky
我沒有看到任何可以告訴它包含依賴關係的pom。 – Planky
@Planky我已經運行了這個命令,它的依賴不包含在jar中。這是否意味着Jenkins以某種方式將它們添加進來? – Staartvin