【Maven】打包补充依赖的操作记录

题外话

每次搞maven环境,总是觉得很痛苦,痛苦的根源源于,无从下手。
要说maven 有多难,自然也不能这样说,究竟也是因为没有系统地去学习,和没有把踩过的坑积累成经验,以至于每一次都踩差不多的坑,浪费相当的时间,打击相当的信心,于是觉得这是一道铜墙铁壁。
每每遇到这些环境问题,首先就觉得,这玩意很麻烦。

遇到的一些问题

1、401认证失败

这个是在maven 的 setting.xml 文件里面的 `<server>` 标签,里面的password错误了。
<!--配置服务端的一些设置。一些设置如安全证书不应该和pom.xml一起分发。这种类型的信息应该存在于构建服务器上的settings.xml文件中。 -->
<servers>
  <!--服务器元素包含配置服务器时需要的信息 -->
  <server>
    <!--这是server的id(注意不是用户登陆的id),该id与distributionManagement中repository元素的id相匹配。 -->
    <id>server001</id>
    <!--鉴权用户名。鉴权用户名和鉴权密码表示服务器认证所需要的登录名和密码。 -->
    <username>my_login</username>
    <!--鉴权密码 。鉴权用户名和鉴权密码表示服务器认证所需要的登录名和密码。密码加密功能已被添加到2.1.0 +。详情请访问密码加密页面 -->
    <password>my_password</password>
    <!--鉴权时使用的私钥位置。和前两个元素类似,私钥位置和私钥密码指定了一个私钥的路径(默认是${user.home}/.ssh/id_dsa)以及如果需要的话,一个密语。将来passphrase和password元素可能会被提取到外部,但目前它们必须在settings.xml文件以纯文本的形式声明。 -->
    <privateKey>${usr.home}/.ssh/id_dsa</privateKey>
    <!--鉴权时使用的私钥密码。 -->
    <passphrase>some_passphrase</passphrase>
    <!--文件被创建时的权限。如果在部署的时候会创建一个仓库文件或者目录,这时候就可以使用权限(permission)。这两个元素合法的值是一个三位数字,其对应了unix文件系统的权限,如664,或者775。 -->
    <filePermissions>664</filePermissions>
    <!--目录被创建时的权限。 -->
    <directoryPermissions>775</directoryPermissions>
  </server>
</servers>

然后,这个server究竟在哪里用到呢?

这个server 和 代码里面的是怎样关联起来的呢?

<settings>
  ...
  <servers>
    <server>
      <id>my-repo</id>
      <username>your-username</username>
      <password>your-password</password>
    </server>
    <server>
      <id>my-snapshot-repo</id>
      <username>your-username</username>
      <password>your-password</password>
    </server>
  </servers>
  ...
</settings>

对应到 idea 的 pom.xml

在 pom.xml 文件的 部分,您可以针对每个仓库使用不同的 。确保它们的 与 settings.xml 中的服务器配置相匹配。

<project>
  ...
  <distributionManagement>
    <repository>
      <id>my-repo</id>
      <url>https://example.com/repository</url>
    </repository>
    <snapshotRepository>
      <id>my-snapshot-repo</id>
      <url>https://example.com/snapshot-repository</url>
    </snapshotRepository>
  </distributionManagement>
  ...
</project>

通过这样的配置,Maven 将使用与仓库相对应的服务器配置进行身份验证,以便正确地连接和部署到相应的仓库。




2、打包的时候,缺依赖

mvn install 的时候,报错,从远程仓库拉取,拉取不下来,本地仓库又没有,于是就报错了。

然后尝试把一些jar放到maven 仓库对应路径下,
发现并不行。

改过 mvn:install 的方式,(注意这个 install 只是 install 到本地,如果是 mvn:deploy 的话,就需要指定仓库了)发现才可以
参考:maven命令 mvn install/deploy 传jar到本地/私有仓库

但有些时间,直接把jar包放上去就行,有时候又必须用

mvn install:install-file -Dfile=taobao-sdk-java-auto_1479188381469-20200406.jar -DgroupId=com.dingtalk.open -DartifactId=taobao-sdk-java -Dversion=20200406 -Dpackaging=jar

才行,也没搞懂。

这个语句是只把jar包打到本地仓库的,还有可以打到远程仓库的,就需要指定 -Durl 参数了

mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=D:\work\scan\com.kevin.skeleton\target\skeleton-1.0.jar -DgroupId=hessian -DartifactId=skeleton -Dversion=1.0 -Dpackaging=jar -DrepositoryId=releases -Durl=http://192.168.0.202:8080/nexus/content/repositories/releases

不过使用 mvn install:install-file 肯定是行得通的。

3、使用 mvn install:install-file 还是不够?

install 完成之后,发现它有一些不行(把 _remote.xxx, xxx.update 干掉之后,也还是不行)

发现那些 xx-api 的依赖,还有一个父依赖在上面,比如 order 是父pom, 它下面还有 order-api, order-common, order-service 三个子模块,它一直在报没有 order-api 的依赖,但把 order-api 依赖补充上去之后,发现,还是缺东西,那没办法,原来还需要把它的父pom的依赖也加上去即还需要把 order 这个依赖加上去(这里说的是本地maven仓库对应的 jar, xml 等)

还要把父级的依赖给引进来! 没想到,,,
还是那句吧,缺啥补啥。




弄完以上几个步骤,终于是完成了。每一次搞这些maven环境,也都很麻烦,也不知道为什么。
可能之前也没有积攒经验。
从现在开始积攒吧

posted @ 2023-08-19 11:50  aaacarrot  阅读(45)  评论(0编辑  收藏  举报