是否将所有maven依赖项下载到不在存储库中的目录?
我开始将我的项目转换为maven,因为我需要使用一个仅在maven上以二进制形式分发的库,但在我的头撞在墙上太久之后,我决定不再伤害自己,而只使用Ant。我想让maven将jar及其所有可传递的依赖项下载到我选择的目录中,这样我就可以像往常一样将它们签入我的SCM,再次成为一名快乐的开发人员。是否将所有maven依赖项下载到不在存储库中的目录?,maven,download,dependencies,Maven,Download,Dependencies,我开始将我的项目转换为maven,因为我需要使用一个仅在maven上以二进制形式分发的库,但在我的头撞在墙上太久之后,我决定不再伤害自己,而只使用Ant。我想让maven将jar及其所有可传递的依赖项下载到我选择的目录中,这样我就可以像往常一样将它们签入我的SCM,再次成为一名快乐的开发人员。 有什么办法可以轻松做到这一点吗?可以潜在地解决您的问题 如果您有一个指定了所有项目依赖项的pom,则只需运行 mvn dependency:copy-dependencies 您将发现target/de
有什么办法可以轻松做到这一点吗?可以潜在地解决您的问题 如果您有一个指定了所有项目依赖项的
pom
,则只需运行
mvn dependency:copy-dependencies
您将发现target/dependencies
文件夹中填充了所有依赖项,包括transitive
添加:要下载依赖项源,可以使用
mvn dependency:copy-dependencies -Dclassifier=sources
(via)。根据答案,我找到了一个关于以下内容的教程:
pom.xml
文件并找到以下内容:
<project>
[...]
<build>
<plugins>
...
</plugins>
</build>
[...]
</project>
[...]
...
[...]
代码>带有:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
org.apache.maven.plugins
maven依赖插件
3.0.0
复制依赖项
包裹
复制依赖项
${project.build.directory}/alternateLocation
假的
假的
真的
mvn dependency:copy dependencies
完成后,它将在
pom.xml
所在的当前目录上的所有jar
依赖项中创建文件夹target/dependency
。我找到了下一个命令
mvn依赖项:复制依赖项-dclassizer=sources
这里请检查
${MAVEN_HOME}/conf
目录中是否有一些配置文件,如settings.xml
。
这些文件覆盖了
.m2
文件夹中的设置,因此,.m2
中的存储库文件夹可能不可见或被丢弃。我终于想出了如何使用Maven。在Eclipse中,创建一个新的Maven项目
下载Maven,提取归档文件,将/bin
文件夹添加到path
通过运行mvn-v
(将打印版本和java安装路径)从命令行验证安装
更改到项目根文件夹(pom.xml所在位置)并运行:
mvn依赖项:复制依赖项
所有jar文件都下载到/target/dependency
要设置另一个输出目录,请执行以下操作:
mvn dependency:copy-dependencies -DoutputDirectory="c:\temp"
现在,通过修改pom.xml,可以对所有依赖项下载重新使用这个Maven项目
通过构建路径->配置构建路径->库->添加JAR,将JAR添加到java项目中。考虑使用Ivy,使用您信任的Ant获得所需的可传递依赖关系管理。或者咬紧牙关,使用Maven目录结构。你试过了吗?没有,但我已经花了我所有的耐心在这一点上切换。也许下次吧。我想回到编码上来。可以用maven完成吗?可能是的副本,但如果我想将所有依赖项复制到本地repo呢?这是用来做什么的?如果可能已经在本地回购中,为什么要复制。它仍然是本地的。@默认情况下,标准maven构建(例如编译、测试、打包、安装等;不确定是否验证)已将所有依赖项复制到本地repo。这不是为了那个。相反,它适用于出于任何原因需要应用程序依赖项的情况。我现在正在使用它来检查依赖库中是否存在冗余API定义(例如,某些库将包含Javax API,这可能与同一API的其他版本冲突),但如果您的应用程序需要将其依赖项打包以供分发,或其他任何用途,这也很好。@Raghuram从技术上讲,您最终得到了所有(已解决)“目标/依赖项”中的工件。此外,由于忽略依赖项的“groupId”坐标,因此存在名称冲突的潜在问题。换句话说,“依赖项:复制依赖项”不保留布局结构。@whaefelinger。您只需将设置为
true
@Raghuram“依赖项:复制依赖项”适用于普通jar。它复制了“一些”可传递依赖项;我不明白为什么有些人被排除在方程式之外。此外,复制POM和父POM,但不保留布局结构;通过源JAR进行复制也是如此。在哪里键入“mvn”命令?右键单击maven项目->maven->??在pom.xml
文件所在文件夹的终端命令行中。无法工作。我认为Maven只是作为插件安装的。我也不得不手动下载Maven。然后mvn依赖项:复制依赖项
成功了!不一定是一个eclipse项目。我在Java反编译器中打开了一个jar文件,并将pom.xml复制到一个空文件夹中。我从该文件夹中调用了mvn dependency:copy dependencies
,并将所有依赖的jar文件很好地复制到一个文件夹中。