将所有分类器的工件下载到选定的目录中

时间:2017-01-25 21:04:42

标签: java maven

我们有一个私人存储库,所以我们需要从中央存储库下载工件并上传它们。

前段时间有人写了一个程序并不总是完美地工作:它会分别下载每个工件的所有依赖项,它会首先扫描依赖树,然后只下载它们,它不会下载源代码和javadocs,很慢,等等。

最近我遇到了这个名为dependency的有用maven插件及其目标get

所以现在下载一些工件,比方说com.sparkjava.spark-core:2.5.4,我会在我的终端上输入:

mvn dependency:get -Dartifact=com.sparkjava:spark-core:2.5.4
mvn dependency:get -Dartifact=com.sparkjava:spark-core:2.5.4:sources
mvn dependency:get -Dartifact=com.sparkjava:spark-core:2.5.4:javadoc

哪个会将工件及其所有依赖项下载到目录~/.m2/repository,然后我可以将其转移到我们的私有存储库。

这种方法效果很好但有两个问题:

  1. 每次分类器不同时我都要运行3次命令,我想立刻获得所有分类器。
  2. 它总是将工件下载到~/.m2/repository,有时可能包含我对私有存储库不感兴趣的其他工件。我需要能够选择另一个目录。
  3. 我可以对这些问题做些什么?关于第一个我可以使用别名(它仍然会运行相同的命令3次),但我不知道如何处理第二个问题,并且插件的文档中也没有提到它。

1 个答案:

答案 0 :(得分:0)

要解决(2),您可以使用标记

更新settings.xml
<localRepository>C:\Users\my\custom\existing\directory</localRepository>

并确保在构建项目时,settings.xml查看可以使用

进行哪些操作
mvn clean install -gs <pathToDirectory>

注意 - 请相应地修改路径。

要解决(1),将以下内容添加到settings.xml也应该有效 -

<profiles>
    <profile>
        <id>downloadSources</id>
        <properties>
            <downloadSources>true</downloadSources>
            <downloadJavadocs>true</downloadJavadocs>
        </properties>
    </profile>
</profiles>

<activeProfiles>
    <activeProfile>downloadSources</activeProfile>
</activeProfiles>

来源 - Maven – Always download sources and javadocs

其他可以提供帮助的maven命令是 -

resolve command with classifier

mvn dependency:resolve -Dclassifier=javadoc #downloads all the documentation