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

chu*_*ubs 121 dependencies download maven

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

Rag*_*ram 247

Maven的依赖插件有可能解决您的问题.

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

mvn dependency:copy-dependencies
Run Code Online (Sandbox Code Playgroud)

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

从下面添加Gustavo的答案:要下载依赖关系,您可以使用

mvn dependency:copy-dependencies -Dclassifier=sources
Run Code Online (Sandbox Code Playgroud)

(通过Apache Maven Dependency Plugin doc).

  • @ses 标准 Maven 构建(例如编译、测试、打包、安装等;不确定验证)默认情况下已将所有依赖项复制到本地存储库。这不是为了那个。相反,它适用于您出于某种原因需要应用程序依赖项的情况。我现在正在使用它来检查依赖库中是否存在冗余 API 定义(例如,某些库将包含 Javax API,这可能与同一 API 的其他版本冲突),但如果您的应用程序需要与其打包的依赖项,这也很好用于分发或其他任何目的。 (2认同)

use*_*ser 7

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

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

    <project>
      [...]
      <build>
        <plugins>
          ...
        </plugins>
      </build>
      [...]
    </project>
    
    Run Code Online (Sandbox Code Playgroud)
  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>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 并在命令行中调用maven mvn dependency:copy-dependencies

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


Bak*_*alf 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"
Run Code Online (Sandbox Code Playgroud)

现在可以通过更改pom.xml来重用这个Maven项目用于所有依赖项下载

通过构建路径将jar添加到java项目 - > configure build path - > libraries - >添加JAR ..

  • 不一定必须是 Eclipse 项目。我在 Java Decompiler 中打开了一个 jar 文件,并将 pom.xml 复制到一个空文件夹中。我从那个文件夹中调用了“mvn dependency:copy-dependencies”,并将所有依赖的 jar 文件很好地复制到一个文件夹中。 (2认同)

Gus*_*avo 5

我找到了下一个命令

mvn dependency:copy-dependencies -Dclassifier=sources

这里maven.apache.org