maven无法导入包问题处理

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

如下:


img_46191f625e6f9f2dade0e376ef8ba618.png
image.png

问题

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

方案

情况一

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

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

img_260c2b14ffd58f190feea76e0b58b830.png
image.png

情况二

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

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

img_6336508850fcbd2104c6ce56df301fed.png
image.png

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


img_96a26e3b725c2f916774a4e17c588251.png
image.png

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


img_60fef061eb602f75df476c8ffa209147.png
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作为常用的工程管理工具,熟悉其内部对我们还是很有帮助的。

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值