2016-10-10 71 views
1

我有一個本地的jar(Maven插件我寫我自己),我正與如何使用依賴安裝本地罐子在Maven的

mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=dependencies/my-maven-plugin-1.0.jar 

插件安裝具有一定的依賴性(在中pom.xml中定義罐子);

<dependencies> 
<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-plugin-api</artifactId> 
    <version>2.0</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.maven.plugin-tools</groupId> 
    <artifactId>maven-plugin-annotations</artifactId> 
    <version>3.2</version> 
    <scope>provided</scope> 
</dependency> 
    <dependency> 
    <groupId>org.yaml</groupId> 
    <artifactId>snakeyaml</artifactId> 
    <version>1.13</version> 
    </dependency> 
    <dependency> 
    <groupId>com.hubspot.jinjava</groupId> 
    <artifactId>jinjava</artifactId> 
    <version>2.1.0</version> 
    </dependency> 
    <dependency> 
    <groupId>commons-io</groupId> 
    <artifactId>commons-io</artifactId> 
    <version>2.5</version> 
    </dependency> 
</dependencies> 

但使用Maven的安裝,插件,這些都沒有安裝。我可以在安裝jar時自動安裝所需的依賴關係嗎?

回答

1

不,你不能那樣做。這是正常的:maven-install-plugin將安裝您通過它的文件,在這種情況下是my-maven-plugin-1.0.jar,就是這樣。它也將查看JAR內部以查找要安裝的POM,因爲如果未安裝POM,安裝的工件將不可用作依賴項。

但它沒有這樣做,因爲它不是必需的。下一次你依賴這個工件,在POM中編寫座標時,Maven會自動從你配置的遠程倉庫(Maven Central默認)下載依賴關係,並將它們安裝在本地倉庫中。不需要手動啓動install-file目標;這僅在Maven存儲庫上的工件不可用時纔有用。

如果maven-install-plugin還會安裝工件的依賴關係以手動安裝,那麼當您最終依賴某個項目中的工件時,Maven本身會執行相同的操作。

+0

感謝您的回答!當我嘗試使用插件時,Maven似乎沒有安裝依賴關係。我更新了我的答案以顯示我的用法。難道我做錯了什麼? – Nathan

+0

@Nathan這看起來像神器'snakeyaml'在你當地的回購中被破壞。刪除文件夾「〜/ .m2/repository/org/yaml/snakeyaml」並重試。一定要正確設置一個代理服務器。 Maven將重新下載它,你可以在檢查後再次檢查該文件夾,看下載的內容是否再次被破壞(POM和JAR應該與[這些文件]相同(http://repo1.maven.org/maven2/組織/ YAML/snakeyaml/1.13 /))。 – Tunaki

+0

該目錄存在,看起來很好(我也試過刪除回購)。當我使用「mvn install」插件安裝插件時,插件源目錄一切正常。 – Nathan