[英]How to copy dependencies of a multi module project?
我有一個依賴於工作區中不同項目模塊的項目。 我試圖將所有依賴項(包括模塊)復制到lib
文件夾中,以創建一個可執行jar,而該jar中沒有打包所有jar。
但是, maven-dependency-plugin
一直抱怨無法將模塊類復制到項目的目標文件夾中。 可能是什么問題?
my.groupt我的模塊1.0
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
結果:
無法在項目my-project上執行目標org.apache.maven.plugins:maven-dependency-plugin:2.1:copy-dependencies(副本依賴項):從C:\\ workspace \\ my-module \\ target \\ classes復制工件時出錯到C:\\ workspace \\ my-project \\ target \\ lib \\ classes:(拒絕訪問)
失敗的原因是Eclipse中的工作區解析。 Eclipse m2e將自身注入到maven的工件解析中。
因此,當您的my-project嘗試獲取所有依賴項時,工件解析器將不返回jar文件(尚不存在),而是返回依賴項目的classes文件夾。
如果您嘗試使用“運行方式-> maven install”來構建項目,則它應該可以工作。
因此,這是您無法在工作區中輕松解決的情況。 為我的項目打開工作空間分辨率,禁用eclipse中的依賴項插件(生命周期綁定),或使用其他插件(如Assembly)來復制您的依賴關系(順便說一句)。 但是請注意,后者僅在手動調用maven時也有效。
您可能正在尋找Maven Shade插件。
它要靈活得多,但要注意-通過Maven Shade構建的任何模塊都使自動跟蹤依賴關系變得非常困難。 盡量不要使陰影結果成為構建過程的主要結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.