Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否将所有maven依赖项下载到不在存储库中的目录?_Maven_Download_Dependencies - Fatal编程技术网

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

是否将所有maven依赖项下载到不在存储库中的目录?,maven,download,dependencies,Maven,Download,Dependencies,我开始将我的项目转换为maven,因为我需要使用一个仅在maven上以二进制形式分发的库,但在我的头撞在墙上太久之后,我决定不再伤害自己,而只使用Ant。我想让maven将jar及其所有可传递的依赖项下载到我选择的目录中,这样我就可以像往常一样将它们签入我的SCM,再次成为一名快乐的开发人员。 有什么办法可以轻松做到这一点吗?可以潜在地解决您的问题 如果您有一个指定了所有项目依赖项的pom,则只需运行 mvn dependency:copy-dependencies 您将发现target/de

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

可以潜在地解决您的问题

如果您有一个指定了所有项目依赖项的
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
    假的
    假的
    真的
    
  • 并在命令行中调用maven
    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文件很好地复制到一个文件夹中。