Java开发工具

maven

2018-11-16  本文已影响0人  虫儿飞ZLEI

maven用过很多次,但是没有详细的总结过
安装。配置略过

1.使用命令行创建maven项目

1.1 准备一个文件夹

mkdir test

1.2 执行创建项目命令

mvn archetype:generate

然后过一会儿会提示创建一个什么类型的项目,可以选择的类型有两千多个,默认的那个是quickstart。


就选quickstart,因为是弄着玩

再然后会提示一个版本:


默认选7就ok
然后输入groupId:

然后还要输入artifactId,version,package这些,(version和package都有默认值,artifactId必须输入值),然后确认一下


最后构建成功:


图片.png

目录结构:


1.3 可以转换成idea项目

命令:mvn idea:idea
pa:mvn eclipse:eclipse(转eclipse)
执行成功的话,就可以用idea打开了
用idea运行里面自带的helloWorld:


1.4 打包

mvn package


会生成这些东西

2 将非maven项目转换为maven项目

在这里面勾选maven

如果项目本身有导入的jar包依赖,比如在lib文件夹里面,需要在pom里面指出来,不然maven会不能打包的

<plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <compilerArguments>
                    <!-- 对应jar放置在项目中的位置-->
                        <extdirs>lib</extdirs>
                    </compilerArguments>
                </configuration>
            </plugin>

3目录结构

目录结构

解释一下文件夹的颜色代表什么:


点中文件夹选择就可以了

4 Scope依赖范围

<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      看这里
      <scope>test</scope>
    </dependency>
  1. compile : 编译,测试,运行都有效,默认的选择
  2. test : 测试有效,例如junit
  3. provided : 编译,测试有效,例如 servlet ,运行时容器会提供实现
  4. runtime : 运行和测试有效,例如 jdbc,编译时只需相应的接口,测试和运行时才需要具体的实现
  5. system : 编译,测试有效。使用此范围的依赖必须通过systemPath元素显式的指定依赖文件,因而此类依赖是不通过Maven仓库解析的,一般适合于本机测试环境下,依赖本地起的服务。

5 多模块

5.1 多模块之间的依赖:

选择一个模块,点击加号添加其他模块作为依赖

ps:如果是web模块依赖其他模块还需要把依赖也部署出去:

5.2 多模块之间的依赖(jar包)

某个模块被maven打成jar,还可以直接引用jar包

        <dependency>
            <groupId>com.test</groupId>
            <artifactId>DAO</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

6 maven命令

前面已经说过几个命令:
mvn archetype:generate
mvn idea:idea(mvn eclipse:eclipse)
mvn package

6.1 主要命令

6.2 其他命令

mvn site:生成项目相关信息的网站
mvn eclipse:clean: 清除eclipse的一些系统设置
mvn jetty:run:运行项目于jetty上(一个类似tomcat的东西,需要maven的pom中添加jetty插件)
mvn -Dwtpversion=1.0 eclipse:eclipse:生成Wtp插件的Web项目(不知道是什么鬼东西)
mvn -Dwtpversion=1.0 eclipse:clean:清除Eclipse项目的配置信息(Web项目)

mvn -e:显示详细错误 信息
mvn validate:验证工程是否正确,所有需要的资源是否可用
mvn dependency:resolve: 打印出已解决依赖的列表
mvn dependency:tree: 打印整个依赖树

7 多模块的依赖继承

7.1依赖继承

父模块的依赖,子模块可以继承,前提是子模块要申明父模块

    <!--声明自己的父模块,将继承父模块的所有依赖-->
    <parent>
        <artifactId>Maven03</artifactId>
        <groupId>com.zhangguo.maven03</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

7.2依赖管理

父模块申明需要的依赖但是不引入,各个子项目根据需求再引入,好处是可以做到依赖版本的统一管理

父模块:


    <!--dependencyManagement里只是声明依赖,并不实现引入,
    因此子项目需要显式的声明需要用的依赖。
    如果不在子项目中声明依赖,是不会从父项目中继承来的;
    只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,
    并且version和scope都读取自父pom;
    另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。-->

    <!--版本管理-->
    <properties>
        <junit.version>4.12</junit.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- junit -->
            <!-- https://mvnrepository.com/artifact/junit/junit -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

子模块:

    <parent>
        <artifactId>Maven03</artifactId>
        <groupId>com.zhangguo.maven03</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>


    <dependencies>
        <!--按需依赖,版本被父模块控制,可以自行声明,优先级更高-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>
上一篇下一篇

猜你喜欢

热点阅读