账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于maven中scope标签的疑问
    60
    0

    学习maven过程中对scope标签有些不理解.主要是对proviede和runtime有的设置有些不理解.查询网上对这两个设置的解释如下:

    • provided: 容器或JDK已提供范围,表示该依赖包已经由目标容器(如tomcat)和JDK提供,只在编译的classpath中加载和使用,打包的时候不会包含在目标包中。最常见的是j2ee规范相关的servlet-api和jsp-api等jar包,一般由servlet容器提供,无需在打包到war包中,如果不配置为provided,把这些包打包到工程war包中,在tomcat6以上版本会出现冲突无法正常运行程序(版本不符的情况)。
    • runtime: 一般是运行和测试环境使用,编译时候不用加入classpath,打包时候会打包到目标包中。一般是通过动态加载或接口反射加载的情况比较多。也就是说程序只使用了接口,具体的时候可能有多个,运行时通过配置文件或jar包扫描动态加载的情况。典型的包括:JDBC驱动等。

    关于provided: 根据上面的说法和compile的区别仅仅是打包的时候不会加入到包中,而依赖tomcat或者jdk提供.
    关于runtime: 根据上面的说法,不会进行编译,但是打包的时候会加入包中.

    1. 第一个问题: 使用了provided这个值之后,也进行了打包了. 打好的包是怎么告诉Tomcat和jdk我需要的包的?
    2. 第二个问题: 使用runtime这个值后.我们知道java代码需要编译后才能使用.但是上面关于runtime的解释是不会进行编译,但是打包的时候加入目标包中.那么如何使用? 都没有编译,怎么使用? 还有就是这个runtime运行时期指的是在哪里运行?本地开发环境还是正式环境?
    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 甜蜜危机 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部