如何下载所有可能的 Maven 依赖项以便它们是本地的
How to download all possible maven dependencies so they are local
我在一个非常庞大的防火墙后面工作,它喜欢在随机连接时打嗝,这使得所有使用远程存储库的工作对我来说都是一个活生生的噩梦!
我正在寻找来自 Git 的项目(这个 https://github.com/mrniko/netty-socketio),它大量使用 maven 来下载依赖项。
我想做的是在另一个终端(比如http://cloud9.io之类的)下载所有的maven依赖,这样整个项目就可以运行独立了。
我已经尝试过mvn clean install
然后压缩源文件夹,但实际上还不够!当我尝试在 Eclipse 中本地 运行 项目时,我仍然遇到 ClassNotFound
相关错误。作为记录,我确实在构建属性中添加了已编译的 *.class 文件,因此 Eclipse 知道它们在哪里。似乎有一些动态生成的随机 classes 仍然不存在(例如 log4j - 我真的不想单独追捕每个)
我想知道是否有一种完全彻底的方法可以从 maven 下载所有可能的依赖项,然后 运行 一个 100% 独立的项目,或者从中创建一个本地 maven 服务器?
我在 Eclipse Luna 上 运行ning Java 7,我确实在我的 windows 7 机器上安装了 Maven(尽管它在远程存储库上几乎不起作用)。我还有一个 Cloud9 实例,可用于 运行 Maven 命令,然后压缩结果以供本地下载。
当您执行mvn clean install
时,maven 会将当前构建的项目的所有依赖项下载到您的本地maven 存储库。这通常位于
%USERPROFILE%\.m2\repository
构建项目时,maven 使用该路径来查找所需的依赖项。
如果要全部下载,可以尝试使用mvn dependency:copy-dependencies
。然后,您将在项目的 target/dependencies
目录中找到所有项目依赖项。这也包括传递依赖。
要将它们全部添加为 eclipse 依赖项,您可能想尝试 maven-eclipse-plugin
。使用该插件,您可以使用 mvn eclipse:eclipse
命令生成 eclipse .project
和 .classpath
文件。这将使用来自 maven 的所需依赖项填充 eclipse 文件。然后,您应该使用 Import existing projects into workspace 而不是 Import existing maven projects.
将项目导入到 eclipse
maven-eclipse-plugin
会将所有这些 jar 添加到 M2_REPO
变量指定的文件夹中。只要确保在 eclipse 项目属性中编辑此变量,就应该设置好。
我也遇到过类似的问题。我会发现,由于防火墙策略的变化,有时我项目中的所有 .jar 文件都已更新为 1K 文件,当在 notepad++ 中打开时,其中包含一条来自防火墙的消息,说明下载已被阻止。
我建议查看 Nexus 以进行本地存储库管理,这意味着您的本地项目不必越过防火墙来检查 Maven 更新。
http://www.andrejkoelewijn.com/blog/2010/03/09/getting-started-with-nexus-maven-repository-manager/
使用依赖插件go-offline任务。
我在一个非常庞大的防火墙后面工作,它喜欢在随机连接时打嗝,这使得所有使用远程存储库的工作对我来说都是一个活生生的噩梦!
我正在寻找来自 Git 的项目(这个 https://github.com/mrniko/netty-socketio),它大量使用 maven 来下载依赖项。
我想做的是在另一个终端(比如http://cloud9.io之类的)下载所有的maven依赖,这样整个项目就可以运行独立了。
我已经尝试过mvn clean install
然后压缩源文件夹,但实际上还不够!当我尝试在 Eclipse 中本地 运行 项目时,我仍然遇到 ClassNotFound
相关错误。作为记录,我确实在构建属性中添加了已编译的 *.class 文件,因此 Eclipse 知道它们在哪里。似乎有一些动态生成的随机 classes 仍然不存在(例如 log4j - 我真的不想单独追捕每个)
我想知道是否有一种完全彻底的方法可以从 maven 下载所有可能的依赖项,然后 运行 一个 100% 独立的项目,或者从中创建一个本地 maven 服务器?
我在 Eclipse Luna 上 运行ning Java 7,我确实在我的 windows 7 机器上安装了 Maven(尽管它在远程存储库上几乎不起作用)。我还有一个 Cloud9 实例,可用于 运行 Maven 命令,然后压缩结果以供本地下载。
当您执行mvn clean install
时,maven 会将当前构建的项目的所有依赖项下载到您的本地maven 存储库。这通常位于
%USERPROFILE%\.m2\repository
构建项目时,maven 使用该路径来查找所需的依赖项。
如果要全部下载,可以尝试使用mvn dependency:copy-dependencies
。然后,您将在项目的 target/dependencies
目录中找到所有项目依赖项。这也包括传递依赖。
要将它们全部添加为 eclipse 依赖项,您可能想尝试 maven-eclipse-plugin
。使用该插件,您可以使用 mvn eclipse:eclipse
命令生成 eclipse .project
和 .classpath
文件。这将使用来自 maven 的所需依赖项填充 eclipse 文件。然后,您应该使用 Import existing projects into workspace 而不是 Import existing maven projects.
maven-eclipse-plugin
会将所有这些 jar 添加到 M2_REPO
变量指定的文件夹中。只要确保在 eclipse 项目属性中编辑此变量,就应该设置好。
我也遇到过类似的问题。我会发现,由于防火墙策略的变化,有时我项目中的所有 .jar 文件都已更新为 1K 文件,当在 notepad++ 中打开时,其中包含一条来自防火墙的消息,说明下载已被阻止。
我建议查看 Nexus 以进行本地存储库管理,这意味着您的本地项目不必越过防火墙来检查 Maven 更新。
http://www.andrejkoelewijn.com/blog/2010/03/09/getting-started-with-nexus-maven-repository-manager/
使用依赖插件go-offline任务。