为了账号安全,请及时绑定邮箱和手机立即绑定

maven无法导入包问题处理

标签:
深度学习

习惯使用个人电脑开发,在公司也使用自己的电脑,而公司使用的开发环境一般为公司内网才能使用,比如maven仓库,npm仓库。在家里开发的时候就出现一些环境不一致的问题。

如下:


1000

image.png

问题

想研究下Spring的内容呢,新建项目后发现包都导入不了。然后项目无法运行

方案

情况一

替换setting.xml,一般在公司,公司会让使用内部的settings.xml,在Idea中可以替换掉为原本自己备份的settings.xml

注意: 有时候公司的settings.xml指向的repository目录与默认的目录不一样,如果Local repository指向的不是自己的本地源,也要修改下

1000

image.png

情况二

一般修改下setting.xml是足够的,不过有时候可能出现一些其他问题,比如maven指向的源地址需要认证啊,在公司下载的库出现问题。

比如执行maven clean的时候,出现这样

1000

image.png

打开目录发现,这是因为之前的settings.xml不对,留下的脏数据


1000

image.png

删除源下对应库的目录即可:


1000

image.png

重新导入

setting.xml

setting.xml主要用来配置maven的执行方式,像pom.xml但是更像是全局的配置,对所有的项目都起作用。一般用来配置:

  • 本地源的位置

  • 服务器源位置

  • 认证信息

有两个位置:

  • ${maven.home}/conf/settings.xml   全局maven配置

  • ${user.home}/.m2/settings.xml 用户maven配置

如果两个配置文件都存在,合并配置信息,同时以用户的配置文件为主。

基本结构

settings.xml的基本结构如下:

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                          https://maven.apache.org/xsd/settings-1.0.0.xsd">
      <localRepository/>
      <interactiveMode/>
      <usePluginRegistry/>
      <offline/>
      <pluginGroups/>
      <servers/>
      <mirrors/>
      <proxies/>
      <profiles/>
      <activeProfiles/>
    </settings>
  • localRepository: 本地仓库。该值表示构建系统本地仓库的路径。其默认值为${user.home}/.m2/repository

  • interactiveMode: Maven是否需要和用户交互以获得输入。如果Maven需要和用户交互以获得输入,则设置成true,反之则应为false。默认为true。

  • usePluginRegistry: Maven是否需要使用plugin-registry.xml文件来管理插件版本。如果设置为true,则在{user.home}/.m2下需要有一个plugin-registry.xml来对plugin的版本进行管理,默认为false。

  • offline:表示Maven是否需要在离线模式下运行。如果构建系统需要在离线模式下运行,则为true,默认为false。如果电脑没网了,那么这个配置就很有用。

  • servers: pom.xml的 repositories 和 distributionManagement可以配置下载和上传源。但是有时候这些操作需要用户名和密码,而用户密码,不应该存在项目的pom.xml文件中,这就是servers需要配置的东西。

// 通过字面意思比较容易理解,不多说了<servers>
    <server>
      <id>server001</id>
      <username>my_login</username>
      <password>my_password</password>
      <privateKey>${user.home}/.ssh/id_dsa</privateKey>
      <passphrase>some_passphrase</passphrase>
      <filePermissions>664</filePermissions>
      <directoryPermissions>775</directoryPermissions>
      <configuration></configuration>
    </server>
  </servers>
  • profiles: 这个相比比pom.xml的配置简单了一些,内部可以配置activation, repositories, pluginRepositories 和 properties标签,理解为profile的个性化配置,单独定义并不会立即生效,需要通过满足条件来激活。  repositories 用来定义不同的profile使用什么类型的源,也很有用。

注意: 经常用到的配置一般是localRepository,servers,profiles, activeProfiles.

更多内容可以参考:Settings Reference

最后

做demo的时候一点小意外,不过maven作为常用的工程管理工具,熟悉其内部对我们还是很有帮助的。

参考

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1.1万
获赞与收藏
1544

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消