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