zoukankan      html  css  js  c++  java
  • Maven笔记 #01# 入门

    一、Maven是干什么的?

    我相信只要你写过足够多的代码,就...
    肯定有思考过写一个脚本方便把项目自动打包成war并部署到服务器;
    肯定有思考过对于一个web项目用什么样的文件结构才比较合适,怎么样才算得上是best practice;
    也许还想过弄个中心仓库免去每次都要自己网上手动找包的麻烦 ...
     - - - - - - - - - - - - -
    Maven正是一个做这些事情的工具。如果你真的尝试做过上面的事情,就很容易理解Maven了。
    那么自己弄和用Maven有什么区别呢?借用《Maven编程实战》里的一个的比喻,建立高度自定义的构建系统(自己写脚本)就像买组装PC,虽然其乐无穷,但是耗时费力,结果也不一定很好,并且实际项目中也不可能给你这么多时间。使用Maven就像购买品牌PC,省时省力,而且直接就是best practice,还能得到Maven社区的大量支持 ...

    二、用Maven的好处

    个人觉得用Maven最大的好处在于:统一了各种规范(流程和项目结构)+依赖管理。

    补充一些理由:

    1. 让你在IDEA和Eclipse等各种集成环境中切换毫无压力
    2. 方便大家合作写代码,节约了学习成本,因为各种东西都已经约定、统一好了
    3. 并且这些约定还是best practice,不仅成熟、稳定,还好用!
    4. 资料多、支持多,随便去GitHub上看Java项目,Maven结构的尤其多
    5. 节省时间。腾出自己网上到处下jar包的时间,做更有价值的事情
    6. 自动化打包部署,有效减少鼠标键盘的磨损度、缓解脱发等不良症状。。。
    7. 手动省略号。。。。

    总之。Maven绝对是个懒人必备的工具。不过,在刚开始,你不得不花一点时间来适应、学习它(很快就会变成习惯!)。只需少许的时间就能掌握这样一件神器,显然非常划算。

    三、Maven与命令行

    跟着官方教程操作一遍差不多就好了。。稍微记录一下↓

    ▲运行mvn package后得到jar包的实际结构(注意resource的位置):

    ▲哪里找包:https://mvnrepository.com/

    ▲生成简单java项目原型:

    mvn -B archetype:generate 
      -DarchetypeGroupId=org.apache.maven.archetypes 
      -DgroupId=com.mycompany.app 
      -DartifactId=my-app

    ▲生成简单java web项目原型:

    mvn archetype:generate 
        -DarchetypeGroupId=org.apache.maven.archetypes 
        -DarchetypeArtifactId=maven-archetype-webapp 
        -DgroupId=com.mycompany.app 
        -DartifactId=my-webapp

    ▲跳过测试:

    mvn clean install -DskipTests

    ▲只跑特定的测试mvn test -Dtest=[ClassName]#[MethodName],例:

    $ mvn test -Dtest=ProfileDAOTest#saveProfile 

    ▲pom.xml参考(其实是方便自己copy...)

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.sample.webapp</groupId>
        <artifactId>web-test-01</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>war</packaging>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <!-- -source 1.5 中不支持 try-with-resources-->
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties>
    
        <dependencies>
            <!-- https://mvnrepository.com/artifact/junit/junit -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.25</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.2.3</version>
                <scope>test</scope>
            </dependency>
            <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-core -->
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>1.2.3</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.38</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>com.zaxxer</groupId>
                <artifactId>HikariCP</artifactId>
                <version>2.7.8</version>
                <scope>compile</scope>
            </dependency>
        </dependencies>
    </project>
    pom.xml

    四、Maven与IntelliJ IDEA

    本来想写点什么,发现官网都准备好了。。feature-rich integration for Maven以及https://www.jetbrains.com/help/idea/maven-support.html

    不过我觉得还是应该以命令行为主,集成环境里的操作作为辅助,这样,IDEA就成了一个高级代码编辑器,之后换其它开发环境也很容易适应。

    ▲以图表方式查看项目依赖关系:

    ▲Maven怎么和web开发结合可以参考这个:https://www.imooc.com/learn/587

  • 相关阅读:
    localStorage单页面及不同页面监听变动
    localstorage跨域解决方案
    eclipse下安装插件
    (转)springAOP解析-2
    (转)springAOP解析-1
    spring源码深度解析-2功能扩展
    spring源码深度解析-1核心实现
    (转)ConcurrentHashMap解析
    (转)HashMap分析
    java程序员应该掌握的技能
  • 原文地址:https://www.cnblogs.com/xkxf/p/9939424.html
Copyright © 2011-2022 走看看