Java中Maven基础详解(包括maven工作原理、安装配置、IDEA建立Maven工程)

Java中Maven基础详解(包括maven工作原理、安装配置、IDEA建立Maven工程)

当前主要的Java构建工具
  • Maven,Gradle,Ivy,Builder,Ant等
  • 其中,Maven是B/S项目主流,Gradle常用于移动开发
Maven基本概念:
  • apache组织提供的一个顶级项目,由Java开发
  • 作用:
    1. 管理项目构建生命周期
    2. 管理项目中jar(核心功能)。自动帮程序员甄别和下载第三方库(jar)
    3. 管理项目基础信息(文档管理、测试报告)

可以说,maven作用于Java平台的项目构建,依赖管理和项目信息管理。

1、项目构建生命周期:

[清理]–>[编译]–>[测试]–>[报告]–>[打包]–>[安装]–>[发布]

[clean]–>[compile]–>[test]–>[report]–>[package]–>[install]–>[publish]

2、项目中jar包管理

Maven工作原理:
在项目中,需要使用到第三方库(即第三方jar包),传统做法:自己去网上查找需要的jar包,下载到本地,进行配置,设置好地址,导入jar包,才能使用。这种传统做法存在两个问题:
1、查找jar包、下载、配置麻烦;
2、需要把jar包放置在合适的路径。当项目发送给其他机器时,可能会因为jar包地址报错。(例如,自己把jar包放在f盘,发送给其他电脑时,没有f盘,这时候编译时就会发生报错)
在项目构建工具Maven下,就可以避免这个问题,这也是Maven的核心功能所在:管理第三方jar包。
在Maven项目下,只需要网上在Maven仓库中搜索所需的jar包,将jar包的依赖信息复制在pom.xml文件中。这样,在项目编译时,maven会自动检索本地计算机是否含有所需jar包,如果没有,在私服仓库中查找jar包(即局域网内),都没有的话,就从Maven中央仓库中自动下载jar包。
由于Maven中央仓库服务器在国外,下载时速度可能比较慢,这时候可以选择国内一些有名的Maven仓库,如阿里云。
Maven中jar包的获取过程如下:
image-20201205185510650

[本地仓库]–>[局域网私服仓库]–>[中央仓库]

3、Maven项目信息管理
  1. api文档
  2. 测试报告
Maven安装与配置

安装 解压即可

注:现在IDEA,eclipse都自带Maven,如非必要,不必安装更换maven。IDEA中Maven的默认路径在IDEA安装目录下:ideaIU-2020.2.3.win\plugins\maven\lib\maven3

查看版本号:在maven3/bin目录下,调出cmd,输入mvn -v

所以Maven原本是不需要配置的。只是为了在任何路径下都可以使用Maven命令,所以需要配置

配置
  1. JAVA_HOME
  2. MAVEN-HOME:Maven安装地址
  3. [path] %MAVEN-HOME%\bin

1、JAVA_HOME在安装jdk时已经配置,故而不需要配置

2、MAVEN-HOME配置。在此电脑-属性-高级系统设置-系统属性中,点击环境变量,image-20201213102957668

在下方系统变量中,新建,变量名MAVEN-HOME,变量值填IDEA中maven的地址image-20201213103051009

3、[path]。系统变量中找到Path,双击进去,新建,输入%MAVEN-HOME%\bin,配置完成。

在cmd窗口中输入mvn -v,查看maven版本号,image-20201213103427626

表示配置成功。

Maven本地仓库配置

本地仓库默认位置:

C:\Users\Administrator\.m2\repository

重新设置Maven本地仓库地址

Maven安装路径\conf\setting.xml中定位标签



#53 <localRepository>/path/to/local/repository</localRepository>

重新设置本地仓库位置

<localRepository>D:\DevTools\ideaIU-2020.2.3.win\plugins\maven\repository</localRepository>

阿里云镜像设置

在mirror位置(大约160行左右)添加阿里云镜像

<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>
Maven工程结构
  1. Maven可以管理的工程,必须按照【约定结构】来创建

  2. 结构

    image-20201213104034760

    1. src:(Java代码)

      1. main文件夹:主要开发 业务程序

        1. java(创建Java文件)

          Java文件创建package,如	src\main\java\com\bjpowernode\model\Student.java
          
        2. resources(存放程序资源文件(配置文件,properties))

      2. test:主要进行测试 单元测试程序

        1. Java(创建测试类)

          Java文件创建测试类,如	src\main\java\com\bjpowernode\model\TestMain.java
          
        2. resources(存放测试程序资源文件(测试时使用的配置文件))

    2. target文件夹:(编译后class文件,在创建项目时,不需要创建。Maven命令在执行时自动创建target)

      目录如图:image-20201205202949326

    3. pom.xml:(核心配置文件:主要用来向Maven讨要jar包)(Project Object Model)

eg:记事本开发Maven工程

Student.java

package com.bjpowernode.model;
public class Student{

    public void sayHello(){
        System.out.print("Hello Maven");
    }
}

TestMain.java

package com.bjpowernode.test;
import com.bjpowernode.model.Student;
import org.junit.Test;
public class TestMain{
    @Test
    public void myTest (){
        Student stu=n  ew Student();
        stu.sayHello();
    }
}
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.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>	//固定不变的

	//这三行是定位package的,简称gav
    <groupId>com.bjpowernode</groupId>	//域名
    <artifactId>Maven_Project</artifactId>	//项目名,不能有中文
    <version>6.0</version>	//版本号
    //<package>war</package>	//这一行通常为默认jar或war,需要时手动添加

	//添加依赖
    <dependencies>
    	//所需的依赖可以到百度Maven Repository,搜索相关包名,获取gav
        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

      </dependencies>

</project>
常见Maven命令:(与项目构建生命周期相关)

1、mvn clean 删除当前工程中target
2、mvn compile 将当前工程中main文件下的所有java编译为class,输送到target文件中
3、mvn test 运行test文件下所有测试文件
4、mvn package 首先将test文件下所有的java测试类的方法调用执行进行测试,并生成[测试报告]。如果测试没有问题,将main文件下所有class文件打成(jar/war),然后输送到target
5、mvn install 与package命令执行基本一致,将[jar\war]推送到Maven的本地仓库

Maven坐标(gav)

为了方便Maven对jar的定位,在Maven世界中,每一个jar都要由一个独立坐标,相当于ip

artifact:构建

这个独立坐标由三部分组成

1. <groupId>公司域名反顺序</groupId>   组织
2. <artifactId>项目名称</artifactId>   产品名称
3. <version>项目版本号</version>   版本
Maven开发流程
  1. 新建Maven项目
  2. 在中央仓库查找第三方jar的依赖文本
  3. 拷贝依赖文本至项目的pom.xml
  4. 执行Maven,编译/构建整个项目
IDEA建立Maven工程(以2020.2版为例,其他版本大同小异)

打开IDEA,选择创建Maven工程image-20201213104442578

选择jdk1.8,勾选Create from archetype,这里选择创建普通的maven项目,并不涉及java web项目,所以选择quickstart,如果要创建web项目,选择下面的webapp,点击next。

在这一页中,点击Artifact Coordinates,展开,这里的groupID,artifactid,version就是之前提到的gavmaven坐标,填好后进入下一步next。

image-20201213105014249

这里,User settings file选择c盘默认即可,Local repository选择上面你自己更改的repository,点击finish,即完成maven项目的构建。

第一次配置Maven工程,需要等待一会(1分钟左右),出现BUILD SUCCESS,即创建成功。image-20201213105304437

在main中Java中写java代码,将所需的依赖在pom.xml中写入。

eg:求两个数的最大公约数。

Java自带的jdk没有求最大公约数的函数,Apache组织中有个org.apache.commons中有个求最大公约数的方法(这里不必死记硬背函数库,需要时上网查找即可,这里只是举个例子)

百度Maven repository,进入Maven,搜索org.apache.commons,如图image-20201213105912144

点击第一个进入,选择使用量较高的版本,复制依赖项。

image-20201213110037470

然后在pom.xml中中粘贴依赖项

<!--apache扩展数学工具包-->
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-math3</artifactId>
  <version>3.6.1</version>
</dependency>

在main-java中创建类hello,使用org.apache.commons中的方法,跟使用jdk自带方法一样

public static void main(String[] args) {
    //计算两个整数的公约数
    int a = ArithmeticUtils.gcd(361, 285);
    System.out.println("a = " + a);
}

即可求出两个数的最大公约数,是不是很简便。

此外,在IDEA的右侧,有个Maven选项,点击查看。image-20201213110511031

在Lifecycle中包括上面提及的Maven命令,点击即可执行Maven命令。

**注意:**在每次添加依赖项后,最好手动点击Maven左上角的刷新按钮,以方便maven下载依赖项,以免报错

  • 14
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
### 回答1: 1. 首先,在IDE创建一个新的Maven项目。 2. 在pom.xml文件添加Spark依赖项。例如: ``` <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.4.0</version> </dependency> </dependencies> ``` 3. 创建一个Java类,并在其编写Spark应用程序代码。例如: ``` import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; public class SparkApp { public static void main(String[] args) { SparkConf conf = new SparkConf().setAppName("SparkApp").setMaster("local[*]"); JavaSparkContext sc = new JavaSparkContext(conf); JavaRDD<String> lines = sc.textFile("input.txt"); JavaRDD<String> words = lines.flatMap(line -> Arrays.asList(line.split(" ")).iterator()); JavaRDD<String> filteredWords = words.filter(word -> !word.isEmpty()); filteredWords.saveAsTextFile("output.txt"); sc.stop(); } } ``` 4. 在IDE运行Spark应用程序。您可以使用本地模式或分布式模式运行应用程序。 5. 您可以在输出目录找到生成的输出文件。 ### 回答2: 理解Spark和Maven基础知识是创建Maven的Spark项目的关键所在。在这个教程,我们将详细介绍如何创建一个Maven的Spark项目,同时也会解释代码的每一个部分。 Spark和Maven介绍: Spark是一个开源的大数据处理框架,它提供了一个高速的、可扩展的基于内存的计算方法。而MavenJava应用程序的项目管理工具,它使得构建和管理项目变得更加容易。 步骤一:创建Maven项目 1.打开Eclipse IDE,选择"File"-> "New" -> "Project"。 2. 在弹出的对话框,选择"Maven" -> "Maven Project"。 3. 点击"Next"按钮,选"Create a simple project"选项,填写项目的GroupId,ArtifactId和Version信息。 4. 点击下一步,填写项目的名称和位置。 5. 选择"Maven archetype",选择"maven-archetype-quickstart"。 6. 最后,点击"Finish"按钮来完成项目的创建。 步骤二:添加Spark依赖 1. 打开pom.xml文件,在里面添加Spark的依赖。Spark有多个版本,所以选择正确的依赖非常重要。 2. 在pom.xml的dependencies标签添加以下代码: ``` <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.4.0</version> </dependency> </dependencies> ``` 这里我们使用了Spark 2.4.0的核心版本。 步骤三:创建Java类 1. 右键点击src/main/java文件夹,新建一个Java类。 2. 在类编写我们的Spark代码,这里我们编写Word Count示例。 ``` import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; public class WordCount { public static void main(String[] args) { String inputFile = args[0]; String outputFile = args[1]; // 创建SparkConf对象 SparkConf conf = new SparkConf() .setAppName("WordCount"); // 创建JavaSparkContext对象 JavaSparkContext sc = new JavaSparkContext(conf); // 读取文件 JavaRDD<String> input = sc.textFile(inputFile); // 对每个单词计数并排序 JavaRDD<String> words = input.flatMap(line -> Arrays.asList(line.split(" ")).iterator()); JavaPairRDD<String, Integer> counts = words.mapToPair(word -> new Tuple2<>(word, 1)) .reduceByKey((a, b) -> a + b); JavaPairRDD<Integer, String> countsSwap = counts.mapToPair(x -> x.swap()); JavaPairRDD<Integer, String> sortedCounts = countsSwap.sortByKey(false); JavaPairRDD<String, Integer> result = sortedCounts.mapToPair(x -> x.swap()); result.saveAsTextFile(outputFile); } } ``` 步骤四:打包和运行代码 1. 在终端,使用以下命令来进入项目的根目录: ``` cd /path/to/project ``` 2. 在终端,使用以下命令使用Maven来打包项目: ``` mvn package ``` 这将在项目的target目录生成可执行的JAR文件。 3. 在终端,使用以下命令来运行代码: ``` spark-submit --class WordCount /path/to/your-jar-file.jar input.txt output.txt ``` 其,/path/to/your-jar-file.jar是你的项目生成的JAR文件的路径,input.txt和output.txt是输入和输出文件的路径。 完成这些步骤之后,你就可以成功的创建了一个Maven的Spark项目,并运行了一个简单的Spark应用程序。 ### 回答3: 首先,为了创建Maven的Spark项目,我们需要先安装Maven和Spark。在安装完成后,我们可以按照以下步骤创建Maven的Spark项目: 1. 在命令行输入以下命令来创建一个基础项目: mvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 2. 在创建完成之后,我们需要在pom.xml文件添加Spark的依赖。可以在Maven官网上找到Spark的依赖信息,并将其复制到pom.xml文件。 3. 接下来,我们需要在我们的代码添加Spark相关的代码来运行Spark应用程序。Spark应用程序通常由SparkConf和SparkContext对象的创建和使用组成。 4. 创建SparkConf对象时,需要使用setAppName方法来设置应用程序的名称,并使用setMaster方法来设置Spark应用程序在哪个节点上运行。 5. 创建SparkContext对象时,需要向构造函数传递SparkConf对象,并且指定Spark应用程序所需的一些配置,例如worker节点的数量等。 6. 最后,我们可以在我们的代码运行Spark应用程序,使用SparkContext对象来创建RDD对象并执行相关的操作。 以上就是创建Maven的Spark项目的详细步骤。需要注意的是,在完成Spark应用程序的编写之后,我们还需要使用Maven来构建和打包应用程序,以便在集群上运行。通过maven命令mvn package,我们可以将Spark应用程序打包成一个jar文件,并在Spark集群上运行。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值