将所有 maven 依赖项下载到存储库中的一个目录 NOT?

我开始将我的项目转换成 maven,因为我需要使用一个只以二进制形式分布在 maven 上的库,但是在把我的头撞在墙上太久之后,我决定不再伤害我自己,而只是使用 Ant。我只想让 maven 把 jar 和它的所有传递依赖项下载到我选择的目录中,这样我就可以像平常一样把它们签入到我的 SCM 中,再次成为一个幸福的开发人员。
有什么简单的办法吗?

209572 次浏览

Maven 依赖性插件可以潜在地解决您的问题。

如果您有一个指定了所有项目依赖项的 pom,那么您所需要做的就是运行

mvn dependency:copy-dependencies

您将发现 target/dependencies文件夹中充满了所有的依赖项,包括传递性。

添加 古斯塔沃在下面的回答: 要下载依赖项 消息来源,可以使用

mvn dependency:copy-dependencies -Dclassifier=sources

(via Apache Maven 依赖性插件文档).

根据 @ Raghuram的答案,我找到了一个关于 复制项目依赖项的教程:

  1. 打开您的项目 pom.xml文件并找到以下内容:

    <project>
    [...]
    <build>
    <plugins>
    ...
    </plugins>
    </build>
    [...]
    </project>
    
  2. Than replace the <plugins> ... </plugins> with:

    <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>
    
  3. And call maven within the command line mvn dependency:copy-dependencies

After it finishes, it will create the folder target/dependency within all the jar's dependencies on the current directory where the pom.xml lives.

我找到下一个命令了

mvn dependency:copy-dependencies -Dclassifier=sources

这里是 Maven.apache.org

请检查在 ${MAVEN_HOME}/conf目录(如 settings.xml)中是否有一些配置文件。 这些文件覆盖来自 .m2文件夹的设置,因此,来自 .m2的存储库文件夹可能不可见或被丢弃。

我终于找到了使用 Maven 的方法,从 Eclipse 中创建一个新的 Maven 项目。

下载 Maven,解压缩存档,将 /bin文件夹添加到 path。

通过运行 mvn -v从命令行验证安装(将打印版本和 java 安装路径)

切换到项目根文件夹(pom.xml所在的位置)并运行:

mvn dependency:copy-dependencies

所有 jar 文件都下载到 /target/dependency

设置另一个输出目录:

mvn dependency:copy-dependencies -DoutputDirectory="c:\temp"

现在可以通过修改 pom.xml 对所有依赖项下载重用这个 Maven-project

通过构建路径向 Java 项目添加 JAR-> 配置构建路径-> 库-> 添加 JAR. 。

我的简单脚本基于 使用者基于 拉古拉姆

getmvndep.sh


#!/bin/bash
groupId=$1
artifactId=$2
version=$3
echo "<project>"                                                      > pom.xml
echo "  <modelVersion>4.0.0</modelVersion>"                          >> pom.xml
echo "  <groupId>com.temp.temp</groupId>"                            >> pom.xml
echo "  <artifactId>temp</artifactId>"                               >> pom.xml
echo "  <packaging>jar</packaging>"                                  >> pom.xml
echo "  <version>0.0.0</version>"                                    >> pom.xml
echo "  <dependencies>"                                              >> pom.xml
echo "    <dependency>"                                              >> pom.xml
echo  "     <groupId>${groupId}</groupId>"                           >> pom.xml
echo  "     <artifactId>${artifactId}</artifactId>"                  >> pom.xml
echo  "     <version>${version}</version>"                           >> pom.xml
echo "    </dependency>"                                             >> pom.xml
echo "  </dependencies>"                                             >> pom.xml
echo "  <build>"                                                     >> pom.xml
echo "    <plugins>"                                                 >> pom.xml
echo "    </plugins>"                                                >> pom.xml
echo "  </build>"                                                    >> pom.xml
echo "</project>"                                                    >> pom.xml
mvn dependency:copy-dependencies -DoutputDirectory="./libs/${version}"
rm pom.xml