美文网首页Maven
Maven(一)- Maven 目录结构及项目编译启动

Maven(一)- Maven 目录结构及项目编译启动

作者: yjtuuige | 来源:发表于2021-08-23 08:09 被阅读0次

    Maven 简介:

    • Maven 翻译为"专家"、"内行",是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven 利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
    • Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
    • Maven 也可被用于构建和管理各种项目,例如 C#RubyScala 和其他语言编写的项目。Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目。

    Maven 功能:

    • 构建、文档生成、报告、依赖、SCMs、发布、分发、邮件列表

    Maven 目录结构:

    • Maven 提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则,大家尽可能的遵守这样的目录结构。如下所示:
    目录 作用
    ${basedir} 存放 pom.xml 和所有子目录
    ${basedir}/src/main/java 项目的 java 源代码所在的目录
    ${basedir}/src/main/resources 项目的资源文件所在的目录,例如:propert文件
    ${basedir}/src/test/java 测试代码所在的目录,例如:JUnit 代码
    ${basedir}/src/test/resources 测试相关的资源文件所在的目录
    ${basedir}/src/main/webapp/WEB-INF web 应用文件目录,web 项目的信息,比如存放 web.xml、本地图片、jsp 视图页面
    ${basedir}/target 打包输出目录
    ${basedir}/target/classes 编译输出目录
    ${basedir}/target/test-classes 测试编译输出目录
    Test.java Maven 只会自动运行符合该命名规则的测试类
    ~/.m2/repository Maven 默认的本地仓库目录位置

    Maven POM 简介: POM 标签详解

    • POM ( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个 XML 文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。
    • 基本结构:
    <?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>
        
        <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,
    maven 会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
        <groupId>com.companyname.project-group</groupId>
        <!-- 项目的唯一ID,一个 groupId 下面可能多个项目,就是靠 artifactId 来区分的 -->
        <artifactId>maven01</artifactId>
        <!-- 版本号 -->
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>
    
        <!--项目引入插件所需要的额外依赖包 -->
        <dependencies>
            <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-api</artifactId>
                <version>5.7.2</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
    </project>
    
    • 所有 POM 文件都需要 project 元素和三个必需字段:groupIdartifactIdversion
    标签 描述
    project 工程的根标签
    groupId 这是工程组的标识。组织或者项目中通常是 唯一标识
    artifactId 这是工程的标识。它通常是工程的名称。可以是多个
    version 这是工程的版本号。
    • artifact 的仓库中,用 version 来区分不同的版本。例如:
      com.company.bank:consumer-banking:1.0
      com.company.bank:consumer-banking:1.1

    创建项目及编译测试

    • Hello.java 文件目录
    • 测试代码
    package com.xxx.demo;
    public class Hello {
        public static void main(String[] args) {
            System.out.println("hello maven");
        }
    }
    
    • 编译:mvn compile
      注:需要在项目的根目下执行
      D:\test\maven01>mvn compile
      
    • 启动测试:CMD 命令行执行 main 方法
      mvn exec:java -Dexec.mainClass="com.xxx.demo.Hello"
      D:\test\maven01>mvn exec:java -Dexec.mainClass="com.xxx.demo.Hello"
      
    • 显示成功界面
      hello maven
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD SUCCESS        # 编译成功
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time:  17.393 s
      [INFO] Finished at: 2021-08-21T15:23:20+08:00
      [INFO] ------------------------------------------------------------------------
      

    如果编译不成功,可能存在如下问题:

    1. 未使用管理员权限执行命令
    2. JDK 环境配置问题,重装 JDK
    3. 代码编写时,类里面设置包名(如果编译时类没有加包名,执行时也不需加包名)

    Maven 安装及环境配置

    相关文章

      网友评论

        本文标题:Maven(一)- Maven 目录结构及项目编译启动

        本文链接:https://www.haomeiwen.com/subject/wwufiltx.html