Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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_Repository_Multi Module - Fatal编程技术网

没有(远程)存储库的Maven?

没有(远程)存储库的Maven?,maven,repository,multi-module,Maven,Repository,Multi Module,我有一个Maven 2多模块项目,希望确保所有内容都来自本地签出的源代码 有没有可能告诉Maven永远不要下载它所拥有的源代码模块的任何东西?我必须禁用远程存储库吗 Maven是否总是要花费高昂的代价将模块安装到本地存储库中,然后为每个依赖项重新提取模块 如果模块的本地源更改,Maven是否会自动首先重新编译模块的依赖项,然后编译依赖项 有没有可能告诉Maven永远不要下载它所拥有的源代码模块的任何东西 不,Maven 2在构建时只“看到”当前模块。另一方面,您可以通过在模块中运行Maven

我有一个Maven 2多模块项目,希望确保所有内容都来自本地签出的源代码

  • 有没有可能告诉Maven永远不要下载它所拥有的源代码模块的任何东西?我必须禁用远程存储库吗
  • Maven是否总是要花费高昂的代价将模块安装到本地存储库中,然后为每个依赖项重新提取模块
  • 如果模块的本地源更改,Maven是否会自动首先重新编译模块的依赖项,然后编译依赖项
有没有可能告诉Maven永远不要下载它所拥有的源代码模块的任何东西

不,Maven 2在构建时只“看到”当前模块。另一方面,您可以通过在模块中运行Maven来构建部分树

我必须禁用远程存储库吗

可以,使用“脱机”选项
-o
-offline
。或者对没有任何文件的代理使用
settings.xml
。但这不是你想要的

Maven是否总是要花费高昂的代价将模块安装到本地存储库中,然后为每个依赖项重新提取模块

是的,但是不贵。在构建过程中,复制文件(十年前很昂贵)。使用依赖项时,Maven只是将文件路径添加到Java进程中。因此,不会再次复制或修改该文件。Maven假定本地存储库中的文件不会更改(或者在下载/安装时只更改一次)

如果模块的本地源更改,Maven是否会自动首先重新编译模块的依赖项

没有。Maven 3有计划,但我找不到一个选项来启用类似的功能

要解决您的问题,您应该安装一个本地代理(如)

  • Maven仅在本地存储库(
    $USER\u HOME/.m2/存储库
    )中不可用时才下载内容(依赖项)。如果您不想下载任何内容,请使用脱机模式。这可以通过使用
    -o
    开关来完成。例如

    mvn -o clean install
    
  • 里面没有什么昂贵的东西。如果您正在构建完整的父项目,它将构建所有模块,然后将工件复制到本地存储库。然后,当您构建一个依赖于这些项目的项目时,Maven只需将它们从硬盘上的本地存储库复制到将为当前项目创建的包中

  • 。我被烧伤了。Maven不会自动编译依赖项。有一个插件叫做。此插件使您能够在构建项目之前构建项目的依赖项