provided 和compile

背景

项目运行打包过程中,发现全依赖jar包很小,使用java -jar 命令运行的时候,报错:缺少依赖 然后查看pom依赖后发现,有Provided关键字, 所以查了一下,做下总结

provided

scope=provided的情况,打包时,不会将jar包加入到依赖中

  • 好处 可以减少jar包冲突,减少不必要的依赖

compile

scope= compile的情况(默认scope), 也就是说,这个项目在 编译,测试,运行阶段都需要这个artifact对应的jar包在classpath中

    <dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>${spark.version}</version>
<scope>provided</scope>
</dependency>