2016-10-10 95 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