MAVEN_HOME D:\Nextcloud\apache-maven-3.9.4

1.MAVEN概念

仓库是软件开发中非常重要的概念,它用于管理和存储各种资源,特别是在Java开发中,仓库扮演着至关重要的角色。让我们进一步扩展上面的话题,深入了解仓库的不同类型和作用。

  1. 本地仓库:

    • 本地仓库是位于开发者电脑上的资源存储地点。
    • 这里存储了已经下载或构建的依赖项,如Java类库(jar文件)、项目构建的中间产物等。
    • 它允许开发者在离线状态下使用已经下载的资源,提高了构建速度和依赖项管理的效率。
  2. 远程仓库:

    • 远程仓库是分布式开发中的关键组成部分,用于存储和分享依赖项资源。
    • 开发者可以从远程仓库下载所需的依赖项,这些远程仓库可以是公共的,也可以是私有的。
    • 最常见的远程仓库是Maven中央仓库,它存储了大量的开源Java库,开发者可以轻松地访问这些资源。
  3. 中央仓库:

    • 中央仓库是Maven团队维护的一个重要资源存储库。
    • 它存储了大量的开源Java库,这些库可以通过Maven坐标轻松地访问。
    • 开发者可以将自己的项目依赖配置为从中央仓库获取资源,这大大简化了依赖项管理。
  4. 私有仓库:

    • 私有仓库通常由公司、团队或个人维护,用于存储特定于项目或组织的资源。
    • 这些资源可能包括具有版权的库、内部开发的jar文件、公司标识和品牌相关的资源等。
    • 私有仓库的存在允许组织有效地管理和分享内部资源,同时确保对外界保密。
  5. 私服的作用:

    • 私服(Private Repository Server)是用于搭建私有仓库的服务器。
    • 它的作用是充当中央仓库的替代品,可以存储和管理组织内的资源。
    • 私服的一项重要作用是允许组织保存具有版权的资源,这些资源无法放在公共中央仓库中。
    • 此外,私服还可以提供更好的安全性和访问控制,确保资源仅对内部开放,不对外共享。

总结来说,仓库在软件开发中是资源管理的关键。本地、远程、中央和私有仓库各自有其特定的作用,而私服则允许组织更好地管理和保护自己的资源,同时有效地与外部资源进行集成。这些仓库和私服一起构成了一个完整的资源生态系统,有助于确保项目的依赖项和资源管理的高效性和可靠性。

2.mvn repository仓库路径设置

在Maven中,您可以通过修改settings.xml文件中的配置来设置Maven仓库的路径。这个文件通常位于Maven的conf目录下,具体的位置取决于您的Maven安装方式和操作系统。

以下是如何设置Maven仓库路径的步骤:

  1. 找到settings.xml文件:

    • 如果您的Maven是通过解压缩安装的,settings.xml文件通常位于Maven安装目录的conf文件夹下。
    • 如果您使用的是Maven的全局配置文件,该文件通常位于$HOME/.m2/目录下(在Windows上通常是C:\Users\<your_username>\.m2\)。
  2. 打开settings.xml文件:
    使用您喜欢的文本编辑器打开settings.xml文件以进行编辑。

  3. 配置本地仓库路径:
    settings.xml文件中,您可以找到一个名为<localRepository>的配置元素。这个元素用于指定本地仓库的路径。如果未设置,则Maven将使用默认的本地仓库路径。

    以下是一个示例<localRepository>元素的配置:

    <localRepository>/path/to/your/local/repository</localRepository>

    /path/to/your/local/repository替换为您希望使用的本地仓库的实际路径。

  4. 保存并关闭文件:
    保存您对settings.xml文件的更改,并关闭文本编辑器。

  5. 测试更改:
    打开终端或命令提示符,运行Maven构建或其他Maven命令以确保新的本地仓库路径生效。

通过上述步骤,您可以轻松地自定义Maven本地仓库的路径,以适应您的项目或个人需求。请确保在修改配置文件之前备份该文件,以防止配置错误。

3.配置阿里镜像仓库

要配置阿里巴巴镜像仓库作为Maven的镜像源,您需要编辑Maven的settings.xml文件,以便将阿里巴巴的镜像地址添加到Maven的配置中。以下是配置阿里巴巴镜像仓库的步骤:

  1. 找到settings.xml文件:

    • settings.xml文件通常位于Maven的conf目录下,具体位置取决于您的Maven安装方式和操作系统。
    • 如果使用的是全局配置文件,该文件通常位于$HOME/.m2/目录下(在Windows上通常是C:\Users\<your_username>\.m2\)。
  2. 打开settings.xml文件:
    使用文本编辑器打开settings.xml文件,以进行编辑。

  3. <mirrors>元素下添加镜像配置:
    settings.xml文件中,您可以找到一个名为<mirrors>的元素,它用于配置镜像。如果不存在,请创建一个。

    <mirrors>元素中,添加以下XML片段,以配置阿里巴巴的Maven镜像仓库:

    <mirror>
        <id>alibaba</id>
        <name>Alibaba Mirror</name>
        <url>https://maven.aliyun.com/repository/public</url>
        <mirrorOf>central</mirrorOf>
    </mirror>

    上述配置将阿里巴巴的Maven镜像仓库设置为中央仓库(Central Repository)的镜像。这意味着当您从中央仓库获取依赖项时,实际上会从阿里巴巴的镜像仓库获取。

  4. 保存并关闭文件:
    保存对settings.xml文件的更改,并关闭文本编辑器。

  5. 测试更改:
    打开终端或命令提示符,运行Maven构建或其他Maven命令以确保新的镜像配置生效。Maven将会从阿里巴巴的镜像仓库获取依赖项。

现在,您已经成功配置了阿里巴巴镜像仓库作为Maven的镜像源,这将加速您的构建过程,因为它可以更快地获取依赖项。请确保在修改settings.xml文件之前备份该文件,以防配置错误。

4.项目结构

src
├─ main
│   ├─ java
│   └─ resources
└─ test
    ├─ java
    └─ resources
│  pom.xml
│
└─src
    ├─main
    │  ├─java
    │  │  └─com
    │  │      └─yyszone
    │  │              Demo.java
    │  │
    │  └─resources
    └─test
        ├─java
        │  └─com
        │      └─yyszone
        │              DemoTest.java
        │
        └─resources

这个目录结构包含了一个Maven项目的关键文件和目录,包括主要代码、测试代码和pom.xml文件。

这个表示方式使用了树状结构,清晰地显示了目录之间的层次关系。主目录 "src" 下包含 "main" 和 "test" 两个子目录,而这两个子目录下又分别包含 "java" 和 "resources" 目录。这种方式使整个目录结构更加易于理解和可视化。

这是一个典型的Maven项目目录结构,用于组织Java项目的源代码、资源文件和测试代码。下面我会详解每个目录的作用:

  1. src/main/java

    • 这个目录用于存放项目的主要源代码,通常是Java类文件。
    • 你的应用程序的核心业务逻辑和功能代码应该位于这个目录下。
    • Maven会编译这个目录中的Java代码,并将编译生成的类文件放入输出目录(通常是target/classes)。
  2. src/main/resources

    • 这个目录用于存放项目的主要资源文件,例如配置文件、模板文件、静态文件等。
    • 与Java源代码一样,这些资源文件也会被包含在项目的构建输出中,可以在运行时访问。
    • Maven会将这个目录的内容复制到输出目录(通常是target/classes),以便在应用程序运行时使用。
  3. src/test/java

    • 这个目录用于存放项目的测试代码,通常是JUnit或TestNG测试类。
    • 测试代码用于验证主要源代码的正确性,它们不包括在最终的应用程序中。
    • Maven会编译这个目录中的测试代码,并将编译生成的测试类文件放入测试输出目录(通常是target/test-classes)。
  4. src/test/resources

    • 这个目录用于存放测试所需的资源文件,例如测试配置文件、测试数据文件等。
    • 与主要的资源目录不同,这些资源文件仅用于测试目的,不会包含在最终的应用程序中。
    • Maven会将这个目录的内容复制到测试输出目录(通常是target/test-classes),以便测试代码可以访问这些资源。

这个目录结构遵循了Maven的约定,有助于项目的组织和构建。主要的源代码和测试代码分开存放,资源文件也按照功能和用途进行分类,这使得项目更易于维护和扩展。同时,Maven的构建过程会自动处理这些目录,将源代码和资源文件合适地复制到构建输出中,以供应用程序运行和测试使用。这种结构也有助于团队合作,因为每个人都知道在哪里找到特定类型的文件。

以下是经过排版的Java代码:
D:\Project\src\main\java\com\yyszone\Demo.java

package com.yys.zone;

public class Demo {
    public String say(String name) {
        System.out.println("Hello " + name);
        return "Hello " + name;
    }
}

 D:\Project\src\test\java\com\yyszone\DemoTest.java

package com.yyszone;

import org.junit.Test;
import org.junit.Assert;

public class DemoTest {

    @Test
    public void testSay() {
        Demo d = new Demo();
        String ret = d.say("maven");
        Assert.assertEquals("Hello maven", ret);
    }
}

 D:\Project\pom.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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.yyszone</groupId>
    <artifactId>project-java</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
</project>

当创建Maven项目时,需要提供一个POM(Project Object Model)文件来描述项目的元数据和依赖关系。您提供的XML文件是一个Maven项目的POM文件,我将解释每个元素的作用:

  1. <?xml version="1.0" encoding="UTF-8"?>: 这是XML声明,指定了XML的版本和字符编码。

  2. <project>: 这是根元素,包含了整个项目的描述。

  3. xmlns 属性:xmlns 定义了 XML 命名空间,这里指定了 Maven POM 命名空间。

  4. xmlns:xsi 属性:这是用于 XML 架构实例命名空间的属性。

  5. xsi:schemaLocation 属性:这个属性指定了 XML 架构的位置。它告诉解析器去哪里查找 XML 文件的架构定义。

  6. <modelVersion>4.0.0</modelVersion>: 这个元素指定了POM模型的版本。通常,您会将其设置为4.0.0,以指示使用Maven的最新版本。

  7. <groupId>com.itheima</groupId>: 这个元素定义了项目的组织或公司的唯一标识符。通常以反转的域名形式命名。

  8. <artifactId>project-java</artifactId>: 这个元素定义了项目的唯一标识符,通常是项目的名称。

  9. <version>1.0</version>: 这个元素定义了项目的版本号。

  10. <packaging>jar</packaging>: 这个元素定义了项目的打包类型。在这种情况下,它指示项目将被打包为JAR文件。

  11. <dependencies>: 这是一个包含项目依赖项的元素的容器。

  12. <dependency>: 这是一个定义项目依赖项的元素。

  13. <groupId>junit</groupId>: 这个元素定义了依赖项的组织或公司的唯一标识符。在这里,依赖项是JUnit测试框架。

  14. <artifactId>junit</artifactId>: 这个元素定义了依赖项的唯一标识符,通常是库或框架的名称。

  15. <version>4.12</version>: 这个元素定义了依赖项的版本号。

以上是POM文件中各个元素的作用和解释。POM文件用于配置和构建Maven项目,确保项目能够正确地构建和管理其依赖项。

5.项目构建

D:\Project\src
在D:\Project 下执行
如:D:\Project>mvn install
下面是几个常用的mvn命令以及它们的作用:

  1. mvn compile

    • 作用:编译项目的源代码。
    • 这个命令会将项目的源代码编译成字节码文件,但不会打包生成可执行的 JAR 或 WAR 文件。编译后的文件通常存储在 target/classes 目录下。
  2. mvn clean

    • 作用:清理项目的构建目录和临时文件。
    • 这个命令会删除 target 目录以及在构建过程中生成的其他临时文件,以便开始一个干净的构建。
  3. mvn test

    • 作用:运行项目的单元测试。
    • 这个命令会执行项目中的单元测试,并输出测试结果。通常,测试类和测试方法需要遵循一定的命名约定,以便 Maven 自动识别和执行。
  4. mvn package

    • 作用:将项目编译并打包成可执行的 JAR(Java 应用程序)或 WAR(Web 应用程序)文件。
    • 这个命令会编译项目的源代码,并将其打包成 JAR 或 WAR 文件,生成的包通常存储在 target 目录下。
  5. mvn install

    • 作用:将项目构建结果安装到本地 Maven 仓库。
    • 这个命令会将项目构建产物(通常是 JAR 文件)复制到本地 Maven 仓库,以便其他项目可以依赖该构建产物。这在多模块项目中很有用。

这些命令是 Maven 中常用的基本构建命令,它们允许您执行不同的构建任务,从编译到测试和打包。根据项目的需求,您可以选择执行其中一个或多个命令。

6.第一个Maven程序-插件创建Maven工程

以下是创建不同类型的 Maven 项目的命令示例:

  1. 创建一个普通 Java 项目:(创建文件夹下不能是一个maven结构,不能有pom文件)

    mvn archetype:generate -DgroupId=com.example -DartifactId=my-java-project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    这个命令将创建一个简单的 Java 项目,用于编写 Java 应用程序。

  2. 创建一个 Web 项目(Web 应用程序):

    mvn archetype:generate -DgroupId=com.example -DartifactId=my-web-project -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

    这个命令将创建一个 Web 项目,用于开发基于 Java 的 Web 应用程序,通常包含 src/main/webapp 目录用于存放 Web 资源。

注意事项:

  • -DgroupId:指定项目的组织标识符。
  • -DartifactId:指定项目的唯一标识符。
  • -DarchetypeArtifactId:指定 Maven Archetype(项目模板)的标识符。
  • -Dversion:指定项目的版本号。
  • -DinteractiveMode=false:禁用交互模式,以便命令行方式创建项目。

这些命令可以根据需要进行自定义,以创建不同类型的 Maven 项目。

1.本地

要将一个.jar文件安装到本地Maven仓库,您可以使用以下mvn install:install-file命令。确保您已经安装了Maven并且已经在命令行中设置了正确的环境变量。然后,使用以下命令:

mvn install:install-file -Dfile=<path_to_jar_file> -DgroupId=<group_id> -DartifactId=<artifact_id> -Dversion=<version> -Dpackaging=<packaging>

请替换以下参数:

  • <path_to_jar_file>:要安装的.jar文件的完整路径。
  • <group_id>:您的项目或组织的唯一标识符。
  • <artifact_id>:要创建的项目或库的唯一标识符。
  • <version>:项目或库的版本号。
  • <packaging>:jar包的打包类型(通常是jar)。

例如,如果要将名为my-library.jar的jar文件安装到本地仓库,并将它的groupId设置为com.example,artifactId设置为my-library,version设置为1.0,packaging设置为jar,则命令如下:

mvn install:install-file -Dfile=my-library.jar -DgroupId=com.example -DartifactId=my-library -Dversion=1.0 -Dpackaging=jar

执行此命令后,jar文件将被安装到本地Maven仓库,并且可以在您的Maven项目中引用它。

mvn install:install-file -Dfile=F:\mobile\uiautomator-2.3.0-alpha02-sources.jar -DgroupId=com.example -DartifactId=uiautomator -Dversion=2.3.0-alpha02 -Dpackaging=jar -Dclassifier=sources