JAVA_Maven

 5. 使用Maven工程 

 5.1 项目构建

Maven可以用来管理项目的声明周期。

Maven定义的声明周期 包括了 清理、编译、测试、打包、安装、站点部署等一套完整的流程。

执行命令有几种方式:

- 打开cmd窗口,进入到这个module的根目录下,执行命令
- 打开idea,在右边有一个控件栏,打开lifecycle,双击执行对应的指令
- 打开idea,在下面有一个 terimal插件栏,打开,执行对应的命令

maven的项目构建的流程是从validate开始的。

例如我们要去执行package,会先执行 validate -> compile -> test - > package

是有一个流程的先后顺序的。

  1. 清理 帮助我们去删除编译生成的target文件夹

    mvn clean

  2. 编译 编译其实就是帮助我们把.java 文件变成 .class文件,并且把对应的配置文件也复制过去

    mvn compile

    编译之后有对应的目录

 

也就是从java和resources文件下开始都是同级到编译后的classes文件

3.测试 测试其实就是去运行这个项目中所有的测试类的测试方法

mvn test

在执行mvn test的时候,会先去编译,执行所有的测试类里面的测试方法

执行 mvn test 会执行测试类下的所有单元测试方法

4.打包 打包其实就是把我们项目打包成 .jar (jar 包) 或者是 .war (war 包)

mvn package

默认是打jar包,如果需要打war包,那么就去修改 pom.xml文件的配置

 打成var包

5.安装 其实就是把打包生成的jar包复制到本地仓库中去

mvn install

怎么样去本地仓库中找对应的jar包呢?

通过坐标来 找

 

5.2.2 scope的传递范围

scope指的是这个依赖的包的作用域

  • compile

    这个是默认的作用域。在编译的时候起作用,在任何时候任何地方都是有效的。

  • provided

    编译的时候有效、测试的时候有效,但是运行的时候失效

比如mysql的驱动包只需要在运行起作用,就可以把范围改成runtine 

        provided:编译有效,测试有效,但是运行时失效

  • test

    这个是测试案例的作用域,这个test修饰的依赖只能在 src/test/java 路径下才能生效

  • runtime

    runtime修饰的jar包,在编译的时候,不起作用,只有在运行的时候,才会起作用

    典型的案例 就是mysql的驱动包。

 

5.2.3 依赖传递

 

 

5.2.4 依赖冲突

在同一个项目中,对于同一个jar包的不同版本,我们应用只导入一个版本,如果导入了多个版本,就依赖冲突了。

  • 声明优先原则

就近原则

因为依赖具有传递性,所有是谁传递次数比较少以谁为准  

 

 先选先声明的,然后用就近原则替换

排除依赖

上面的两种方式其实都是不靠谱的。因为其实如果你需要使用声明优先原则来排除依赖的话,那么依赖的顺序就不能改变了。一般来说,我们不能使用声明优先原则和就近原则来排除依赖,对于冲突的依赖,我们应该手动排除

 6.自定义标签常量,来控制统一版本.

提取常量

提取常量是从根本上预防冲突依赖的问题

 

6. maven的插件

maven的插件是指我们maven运行的几个命令都是依赖于maven的插件来工作的。

 

 7.指定编译版本

8. 使用maven来开发

和之前不一样的地方

  • 导包方式不一样

  • 代码写的位置、配置文件存放的位置不一样

  • 读取配置文件的输入流的方式不一样

    现在的读取方式:

  • // 初始化数据源
        static {
    
            Properties properties = new Properties();
            try {
                // 绝对路径的写法,不好
    //            InputStream in = new FileInputStream("E:\\cskaoyan\\35workspace\\workspace_35\\druid-maven-demo\\src\\main\\resources\\druid.properties");
    
                // 我们在maven的项目中,需要使用类加载器去找文件的路径
                ClassLoader classLoader = DruidUtils.class.getClassLoader();
    
                // 类加载去找文件的时候,因为类加载是从classes文件夹开始加载的,所以会从classes文件夹下开始加载
                InputStream inputStream = classLoader.getResourceAsStream("druid/druid.properties");
    
    
    //            URL url = classLoader.getResource("druid/druid.properties");
    //            String path = url.getPath();
    //
    //            System.out.println("path:" + path);
                // /E:/cskaoyan/35workspace/workspace_35/druid-maven-demo/target/classes/druid.properties
    
    
                properties.load(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }

        使用类加载器加载(因为文件都被映射到target里面了)

 

 相当于通过类加载器是从target下的classes的同级目录下开始查找

 

==

c3p0在src的配置文件 ,在maven里在哪里

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值