将所有maven依赖项下载到不在存储库中的目录?

时间:2011-10-26 19:54:42

标签: maven download dependencies

我开始将我的项目转换为maven,因为我需要使用一个仅以二进制形式分发的库而不是maven,但是在我的头撞到墙上太长时间之后我决定不再伤害自己并且只使用Ant。我想让maven将jar及其所有传递依赖项下载到我选择的目录中,这样我就可以像往常一样将它们检查到我的SCM中,并再次成为一个幸福的开发者。
任何想法如何轻松地做到这一点?

5 个答案:

答案 0 :(得分:234)

maven dependency plugin可以解决您的问题。

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

mvn dependency:copy-dependencies

你会发现target/dependencies文件夹中包含所有依赖项,包括transitive。

添加Gustavo's answer from below:要下载依赖项来源,您可以使用

mvn dependency:copy-dependencies -Dclassifier=sources

(通过Apache Maven Dependency Plugin doc)。

答案 1 :(得分:6)

根据@Raghuram回答,我找到Copying project dependencies的教程,Just:

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

    <project>
      [...]
      <build>
        <plugins>
          ...
        </plugins>
      </build>
      [...]
    </project>
    
  2. <plugins> ... </plugins>替换为:

    <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. 并在命令行mvn dependency:copy-dependencies

  4. 内调用maven

    完成后,它会在target/dependency所在的当前目录的所有jar依赖项中创建文件夹pom.xml

答案 2 :(得分:6)

我终于想出了如何使用Maven。在Eclipse中,创建一个新的Maven项目。

下载Maven,解压缩档案,将/bin文件夹添加到路径。

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

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

mvn dependency:copy-dependencies

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

设置另一个输出目录:

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

现在可以通过更改pom.xml来重复使用此Maven项目进行所有依赖项下载

通过构建路径将jar添加到java项目 - &gt;配置构建路径 - &gt;库 - &gt;添加JAR ..

答案 3 :(得分:3)

我找到了下一个命令

mvn dependency:copy-dependencies -Dclassifier=sources

此处maven.apache.org

答案 4 :(得分:1)

请检查${MAVEN_HOME}/conf目录中是否有settings.xml目录中的某些配置文件。 这些文件会覆盖.m2文件夹中的设置,因此,.m2中的存储库文件夹可能不会被显示或丢弃。