2012-11-29 34 views
0

今天,如果我們使用Maven構建,jar名稱是$ {project.artifactId} - $ {project.version}。在本地資源庫,該結構是這樣的:如何從maven回購庫中的jar中刪除版本信息

-\.m2 
---\repository 
-----\com 
-------\someproject 
---------\1.0 
-----------\someproject-1.0.jar 

我想知道的是,路徑已經告訴完全版本,爲什麼罐子的名字應該被命名爲這樣。有沒有任何方法來刪除版本庫中的jar名稱中的版本信息?我試過但將jar複製到版本庫時不起作用。

我搜索了這個問題,發現了很多類似的問題。當打包成戰爭或耳朵時,似乎沒有問題,罐子怎麼樣?有些回答幾年前不可能,所以我想知道是否有人今天有解決方案。

我喜歡: -.m2 --- \庫 ----- \ COM ------- \ someproject --------- \ 1.0 - --------- \ someproject.jar

+0

我不同意。這個問題是關於本地Maven倉庫,另一個關於EAR程序集。 – oberlies

回答

4

該maven約定是爲一個神器被命名爲<artifact>-<version>.jar。雖然在文件夾和工件中有版本號可能看起來多餘,但這是有原因的。

它存儲在存儲庫中版本號的文件夾中的原因是,還可能有其他文件與工件(源,pom等)相關聯。

將工件附加到版本號以及分發應用程序也是有意義的。當庫與您的應用程序打包在一起時,瞭解哪些版本的依賴項打包時無需查看pom就很有用(查看依賴關係圖時也是如此)。

即使您可以讓工件名稱沒有附加版本號,也不會推薦它,因爲我確定有些東西會因爲依賴這些maven約定而中斷(maven更多的是關於約定over組態)。

+0

+1對於爲什麼事情是這樣的一個很好的解釋 –

+0

感謝您的友好解釋。我想做這樣的事情的原因如下: 1.罐子名稱太長會添加版本信息 2.如果其他人使用我們生產的罐子,名稱看起來不太好。 ps:我們的罐子似乎只有一個版本... –

+0

那麼只需使用[Maven assembly plugin](http://maven.apache.org/plugins/maven-assembly-plugin/)以任何方式組裝文件你想要他們...... – oberlies

相關問題