jjzjj

项目中如何配置 Maven 为国内源

Master_hl 2024-07-22 原文

目录

1. 创建出一个 Maven 项目

2. 打开项目配置界面, 检查并配置国内源

2.1 打开配置界面 (当前项目界面和新项目配置界面)

2.2 搜索 "Maven"

2.3 设置 setting.xml (给此 xml 中添加国内源)

2.4 把上面的步骤 (2.1~2.3)  在新项目的配置界面中重新配置一遍.

3. 重新下载 jar 包


1. 创建出一个 Maven 项目

2. 打开项目配置界面, 检查并配置国内源

2.1 打开配置界面 (当前项目界面和新项目配置界面)

2.2 搜索 "Maven"

2.3 设置 setting.xml (给此 xml 中添加国内源)

 打开此路径后, 会出现两种情况: 

1. 你的路径下有 settings.xml 文件;

2. 你的路径下没有 setting.xml 文件;

【第一种情况配置国内源】

使用 VSCode 或者其他文本编辑器打开 settings.xml 文件, 并找到 mirrors 结点, 在里面加上以下代码即可.

<mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>        
      </mirror>

【第二种情况配置国内源】

将自己同学或者朋友已经配置好的 settings.xml 文件拷贝到此路径下即可.

【注意】

此路径属于第一种情况时, 不能像第二种情况一样拷贝朋友的 xml 文件

【为什么要给 settings 添加国内源】

 

maven 项目为什么要下载 jar 包 >>>

最早之前我们要去下载 jar 包, 就和我们最早智能时代去下载 app 一样, 就是一个链接, 本来我们要去下一个王者荣耀, 结果发现是一个钓鱼的 app, 来了之后, 先让我们看 60 秒的广告, 正在打团战的时候, 又给我弹一个广告, 可想而知是非常糟糕的一件事, 但是野蛮时代就是这样.  我们下载 jar 包也是这样, 假设我想用一个很正经的 MD5 的加密库, 结果你就统计了我用户的一个行为, 你就搜集了我本地敏感的用户信息, 那我的 jar 包就出现问题了, 就有风险了, 那这时候怎么办? 就有一个人站了出来, 就建立了一个平台, 所有的 jar 包你都发布到这个平台,  我的平台给你进行审核, 审核完了之后, 其他人就可以去用了. 这就和我们之前下载 app , 经常会下载到一些伪造的,冒充的 app , 后来就有了官方的应用市场, 所有的东西都要进行官方的审核, 你就可以放心大胆的去用它了, 这也是咱们 maven 项目以及后面的 spring 项目要去下载 jar 包的原因.

为什么要配置 settings 国内源 >>>

由于 Maven 中央仓库在国外, 这就导致一个问题, 为什么我创建 servlet 项目, 创建 spring 项目的时候, 我创建失败了, 就是因为你去拉这个中央仓库的时候, 它在国外, 然后国外网络不好, 导致你拉了一半, 或者是在默认的超时时间里, 你都没有把这个 jar 包下载下来, 或者下载的时候网络中断了, 下载了一个一半的 jar 包, 然后你运行的时候就出现问题了, 你发现你的项目就跑不起来, 就是这个原因. 为了解决问题, 于是三方就跳出来了, 国内比较典型的 jar 包有两个, 一个是阿里云, 一个是网易云, 前边第一种情况配置的国内源就是阿里的. 

既然有了阿里云, 网易云, 是不是就相当于阿里就做了一个人家国外已经做过的事呢?  开发者在发布 jar 包的时候, 是否需要将 jar 包也同步发到阿里, 网易呢? 那这样就会给人家开发者增加负担的, 人家也不会愿意, 而且会导致 maven 的生态不稳定. 所以这两家国内源就非常聪明, 去 maven 中央仓库去增量同步 jar 包, 这时候我们在 settings 里面配置国内源, 就可以直接去国内的网络去访问了, 这个时候, 速度就提升了很多了. 之前我们从中央仓库下载 jar 包, 正常情况下, 我们去下载一个 spring 项目的 jar 包可能需要 5 分钟, 现在我们从国内源下载 10 秒钟可能就搞定了.

2.4 把上面的步骤 (2.1~2.3)  在新项目的配置界面中重新配置一遍.

 

3. 重新下载 jar 包

为什么要重新下载 jar 包 >>>

第一次下载已经失败了, 那么这时候失败有两种情况: 

1. 压根就没下载下来

2. 下载了一半, 但是因为你的网络抖动, IDEA 没发现, IDEA 显示的是成功, 但是你用的时候不能用. 

所以我们需要先将旧的 jar 包删除 (旧 jar 包可能是不完整的).

怎么删除旧 jar 包 >>>

我们在配置的时候, 是打了两个勾的, 我们只做了第一件事, 第二件事没有做, 第二个配置就是我们的本地仓库.

【本地仓库】

前面我们只谈到了三个仓库, 那么本地仓库又是什么呢?

最早我们在下载 jar 包的时候, 是没有本地仓库的, 我们需要本地仓库就从线上去拉, 拉完就放到我们的项目里面, 但是这里会有一个问题, 比如我们下载一个 mysql 的 jar 包, 我们第一次去拉去这个 jar 包, 这个项目已经创建完了, 第二次我们在写项目的时候, 还需要 mysql 的 jar 包, 又得从中央仓库去拉, 此时就会有两个问题, 不管是国内的还是国外的, 我们都需要消耗网络资源. 而且第一次我们已经下载好了, 此时我们本地项目已经有了 jar 包, 第二次我们又去下载, 不科学不合理, 这个为了减轻中央仓库的负担, 也为了加快本地下载的速度, 所以它就会在中央仓库和用户之间架一个本地仓库, 起的作用就是缓存 !!

删除 jar 包就可以找到上面那个路径, 然后把下面的 jar 包全部删除,  下一次创建项目时需要这些 jar 包时, 重新再下载一次即可..(依然是从国内源下载) 

 

【重新下载 jar 包】

 

以上就是配置 Maven 为国内源的具体步骤, 跟着步骤一步步操作能解决 99% 的兄弟的问题, 
还有 1% 如果没成功, 可以尝试更换网络重新执行以上步骤!!!

有关项目中如何配置 Maven 为国内源的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  7. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  8. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  9. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  10. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

随机推荐