• maven


    1.Maven简介

      Maven是基于项目对象模型(POM Project Object Model),可以通过一小段描述信息(配置文件)来管理项目的构建、报告和文档的软件项目管理工具。

      Maven主要有两大作用:一是为项目的插件下载、编译、打包、测试、上传、文档生成、项目部署、版本管理等提供完善的项目管理,二是将各个子项目整合成一个系统的项目整体。它们都是通过maven的配置文件和pom.xml标签完成的。

    2.Maven文件结构

    Project
        - src
            - main
                - java
                    - com.maven.maven01.model
                        - HelloWorld
                - resources
            - test
                - java
                    - com.maven.maven01.model
                        - HelloWorldTest
        - pom.xml

      由于Maven提供了相关生命周期管理,所以只需要建好Maven约定的文件结构和pom.xml,就可以直接用mvn运行。

      通常创建Maven文件结构,都是在Maven命令创先项目时,通过指定模板或者手动输入模板来完成的。

     3.Maven项目创建

      主要通过mvn archetype:generate命令来实现。maven提供了创新建一些项目的模板,通过手动或指定参数的方式,可以快速搭建起项目文件结构。

      1.手动输入创建j项目

    mvn archetype:generate

      然后根据提示依次输入模板编号(系统输出1-7个模板选项,对应选择即可),groupId、archetypeId、version、package即可创建。

      例如:

    mvn archetype:generate
    (以下开始系统输入) Choose archetype:
    1...对应一个模板名字   ... 7...对应一个模板名字 Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 7:回车(默认设置) Define value for property 'groupId': com.moon Define value for property 'artifactId': moon-model Define value for property 'version' 1.0-SNAPSHOT: 回车(默认设置) Define value for property 'package' com.moon: 回车(默认设置)
    Y: :回车(确认配置)
    最后配置如下:
    groupId: com.moon
    artifactId: moon-model
    version: 1.0-SNAPSHOT
    package: com.moon

      模板生成的文件结构为:

    .
    ├── pom.xml
    └── src
        ├── main
        │   └── java
        │       └── com
        │           └── moon
        │               └── App.java
        └── test
            └── java
                └── com
                    └── moon
                        └── AppTest.java

      2.输入参数创建

      上面的依次输入参数创建和一次性执行一条命令。需要注意,创建模板时需要用-DarthetypeArtifactId指定那个模板名称。

    mvn archetype:generate 
      -DarchetypeArtifactId=maven-archetype-quickstart
      -DgroupId=com.moon
      -DartifactId=moon-model
      -Dversion=1.0-SNAPSHOT

      -DinteractiveMode=false
    -DdownloadSources=true -DdownloadJavadocs=true
     

    4.Maven常用命令

    • mvn -v                         查看Maven版本号
    • mvn compile                 编译源码生成字节码文件,保存在target文件下,包含classes和maven-status子文件夹
    • mvn test-compile          编译测试源码生成字节码文件,保存在target文件夹下的test-classes子文件夹中
    • mvn test                  运行测试,检查src下的test文件夹
    • mvn package                将target文件夹下编译好的classes文件打包
    • mvn clean                    删除target文件
    • mvn install                   将jar包上传至本地仓库
    • mvn site                      生成项目文档,这里需要考虑到mvn插件版本匹配的问题,可以通过<build><plugins><plugin></plugin><plugins><build>指定插件
    • mvn clean install           执行了mvn compile、mvn pacakge、mvn install、mvn clean
    • mvn source:jar              项目打包
    • mvn eclipse:eclipse       生成eclipse项目,对应的是mvn eclipse:clean,清除eclipse设置
    • mvn idea:idea               生成idea项目,对应的是mvn idea:clean,清除idea设置
    • mvn dependency:list     查看项目的dependency

     5.pom.xml标签简记

    <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.0http://maven.apache.org/maven-v4_0_0.xsd"
    >
        <!--参考网址:http://maven.apache.org/guides/index.html-->
        <!--项目-->
        <groupId>反写的公司网址+项目名</groupId>
        <artifactId>项目名+模块名</artifactId>
        <versoin>>版本号</version>
        <packaging>打包的格式(*jar,*war,*zip,*pom)</packaging>
        <name>项目名</name>
        <url>项目地址</url>
        <description>项目描述</description>
        <developers>开发者信息</developers>
        <licenses>许可证信息</licenses>
        <organization>组织信息</organization>
        
        <!--设置全局属性-->
        <properties>
            <!--设置编码格式-->
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <!--添加两个junit插件的属性,在dependency中引用使用即可-->
            <junit.version>3.8.1</junit.version>
            <junit.scope>test</junit.scope>
        </properties>
        
        <!--依赖列表-->
        <dependencies>
            <dependency>
                <groupId></groupId>
                <artifactId></artifactId>
                <version></version>
                <type></type>
                <!--
                    依赖范围,只在test目录下能够引入
                    scope可以设置的依赖范围:http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
                -->
                <scope>test</scope>
                <!--设置依赖是否可选-->
                <option>false</option>
                <!--排除依赖,B.jar依赖A.jar,C.jar依赖B.jar,但C.jar不想依赖A.jar-->
                <exclusions>
                    <exclusion></exclusion>
                </exclusions>
            </dependency>
        </dependencies>
        
    
        <!--依赖管理,一般写在父类pom.xml中,子依赖继承它-->
        <dependencyManagement>
            <dependency></dependency>
        </dependencyManagement>
        <!--示例
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    // 使用properties中定义的属性
                    <version>${junit.version}</version>
                    <scope>${junit.test}</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
        -->
        
        <!--依赖继承,一般写在子类pom.xml中,继承父类pom.xml-->
        <parent></parent>
        <!--示例
        <parent>
            <groupId>com.hongxing</groupId>
            <artifactId>hongxing-parent</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                // 父类properties定义了junit.version和junit.scope属性,并且在dependency引用了该属性
                // 这里就不用写了version和scope了,但是groupId和artifactId要写
            </dependency>
        </dependencies>
        -->
    
        <!--插件管理-->
        <!--插件地址:http://maven.apache.org/plugins/index.html-->
        <build>
            <!--插件列表-->
            <plugins>
                <plugin>
                    <groupId></groupId>
                    <artifactId></artifactId>
                    <version></version>
                </plugin>
            </plugins>
        </build>
        <!--示例
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>2.6</version>
                    <executions>
                        <execution>
                            <phase>test</phase>
                            <goals>
                                <goal>resources</goal>
                                <goal>testResources</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>2.7</version>
                </plugin>
            </plugins>
        </build>
        -->
        <!--聚合多个模块一起编译-->
        <modules>
            <Module>../hongxing-bge</Module>
            <Module>../hongxing-nge</Module>
            <Module>../hongxing-sg</Module>
        </modules>
    </project>
  • 相关阅读:
    KMP字符串查找
    基数排序
    二分查找来查找旋转数组
    通过前序(后序)+中序创建树
    二维数组找最大值
    用字符串的空格替换其他字符
    桶排序
    字符串的排列
    和为S的两个数字
    整数中1出现的次数(从1到n整数中1出现的次数)
  • 原文地址:https://www.cnblogs.com/kuaizifeng/p/9789298.html
Copyright © 2020-2023  润新知