Maven项目打包报找不到符号

前言

笔者的情况是在maven打包时,有个模块始终某个类报找不到符号,但通过idea的ctrl是能点进去这个类的,并且这个类是在其他模块下。

原理

是循环依赖的问题,比如我的demo模块用到了model模块的一个实体,打包报找不到符号,先去检查maven里pom里有没有导入model模块,然后把model模块install,把model模块打包并安装到本地,此时再去package此demo模块则可以了。来学一下install和package命令的区别。

在Maven中,installpackage命令都是用于构建项目的,但它们的作用略有不同:

  1. mvn package

    • 这个命令会编译你的项目,并将编译后的代码和所有资源文件打包成一个JAR文件(或者WAR文件,如果是Web项目)。
    • 在执行package之前,它会依次执行以下生命周期阶段:
      • validate:验证项目是否正确且所有必要信息是否都可用。
      • compile:编译源代码。
      • test:使用适当的单元测试框架(如JUnit)运行测试。
      • package:打包编译后的代码及资源文件成JAR/WAR包。

    示例:

    mvn package
    
  2. mvn install

    • 这个命令会在执行所有package阶段的步骤之后,将打包后的JAR/WAR文件安装到本地的Maven仓库中(通常是~/.m2/repository)。
    • 这样,其他本地项目就可以通过依赖引用这个JAR/WAR文件。
    • 在执行install之前,它会依次执行以下生命周期阶段:
      • validate
      • compile
      • test
      • package
      • verify:运行任何检查以验证打包是否有效且符合质量标准。
      • install:将打包的工件安装到本地仓库,以便其他项目使用。

    示例:

    mvn install
    

区别

  • mvn package只是打包你的项目,不会将生成的包安装到本地Maven仓库。
  • mvn install不仅打包你的项目,还会将生成的包安装到本地Maven仓库,以便其他项目可以依赖它。

何时使用

  • mvn package:如果你只是想要生成一个JAR/WAR文件,进行本地测试或分发。
  • mvn install:如果你需要其他项目依赖当前项目生成的JAR/WAR文件,或者你正在进行模块化开发,需要将某个模块安装到本地仓库,以供其他模块使用。
  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值