MAVEN
MAVEN_HOME D:\Nextcloud\apache-maven-3.9.4
1.MAVEN概念
仓库是软件开发中非常重要的概念,它用于管理和存储各种资源,特别是在Java开发中,仓库扮演着至关重要的角色。让我们进一步扩展上面的话题,深入了解仓库的不同类型和作用。
-
本地仓库:
- 本地仓库是位于开发者电脑上的资源存储地点。
- 这里存储了已经下载或构建的依赖项,如Java类库(jar文件)、项目构建的中间产物等。
- 它允许开发者在离线状态下使用已经下载的资源,提高了构建速度和依赖项管理的效率。
-
远程仓库:
- 远程仓库是分布式开发中的关键组成部分,用于存储和分享依赖项资源。
- 开发者可以从远程仓库下载所需的依赖项,这些远程仓库可以是公共的,也可以是私有的。
- 最常见的远程仓库是Maven中央仓库,它存储了大量的开源Java库,开发者可以轻松地访问这些资源。
-
中央仓库:
- 中央仓库是Maven团队维护的一个重要资源存储库。
- 它存储了大量的开源Java库,这些库可以通过Maven坐标轻松地访问。
- 开发者可以将自己的项目依赖配置为从中央仓库获取资源,这大大简化了依赖项管理。
-
私有仓库:
- 私有仓库通常由公司、团队或个人维护,用于存储特定于项目或组织的资源。
- 这些资源可能包括具有版权的库、内部开发的jar文件、公司标识和品牌相关的资源等。
- 私有仓库的存在允许组织有效地管理和分享内部资源,同时确保对外界保密。
-
私服的作用:
- 私服(Private Repository Server)是用于搭建私有仓库的服务器。
- 它的作用是充当中央仓库的替代品,可以存储和管理组织内的资源。
- 私服的一项重要作用是允许组织保存具有版权的资源,这些资源无法放在公共中央仓库中。
- 此外,私服还可以提供更好的安全性和访问控制,确保资源仅对内部开放,不对外共享。
总结来说,仓库在软件开发中是资源管理的关键。本地、远程、中央和私有仓库各自有其特定的作用,而私服则允许组织更好地管理和保护自己的资源,同时有效地与外部资源进行集成。这些仓库和私服一起构成了一个完整的资源生态系统,有助于确保项目的依赖项和资源管理的高效性和可靠性。
2.mvn repository仓库路径设置
在Maven中,您可以通过修改settings.xml
文件中的配置来设置Maven仓库的路径。这个文件通常位于Maven的conf
目录下,具体的位置取决于您的Maven安装方式和操作系统。
以下是如何设置Maven仓库路径的步骤:
-
找到
settings.xml
文件:- 如果您的Maven是通过解压缩安装的,
settings.xml
文件通常位于Maven安装目录的conf
文件夹下。 - 如果您使用的是Maven的全局配置文件,该文件通常位于
$HOME/.m2/
目录下(在Windows上通常是C:\Users\<your_username>\.m2\
)。
- 如果您的Maven是通过解压缩安装的,
-
打开
settings.xml
文件:
使用您喜欢的文本编辑器打开settings.xml
文件以进行编辑。 -
配置本地仓库路径:
在settings.xml
文件中,您可以找到一个名为<localRepository>
的配置元素。这个元素用于指定本地仓库的路径。如果未设置,则Maven将使用默认的本地仓库路径。以下是一个示例
<localRepository>
元素的配置:<localRepository>/path/to/your/local/repository</localRepository>
将
/path/to/your/local/repository
替换为您希望使用的本地仓库的实际路径。 -
保存并关闭文件:
保存您对settings.xml
文件的更改,并关闭文本编辑器。 -
测试更改:
打开终端或命令提示符,运行Maven构建或其他Maven命令以确保新的本地仓库路径生效。
通过上述步骤,您可以轻松地自定义Maven本地仓库的路径,以适应您的项目或个人需求。请确保在修改配置文件之前备份该文件,以防止配置错误。
3.配置阿里镜像仓库
要配置阿里巴巴镜像仓库作为Maven的镜像源,您需要编辑Maven的settings.xml
文件,以便将阿里巴巴的镜像地址添加到Maven的配置中。以下是配置阿里巴巴镜像仓库的步骤:
-
找到
settings.xml
文件:settings.xml
文件通常位于Maven的conf
目录下,具体位置取决于您的Maven安装方式和操作系统。- 如果使用的是全局配置文件,该文件通常位于
$HOME/.m2/
目录下(在Windows上通常是C:\Users\<your_username>\.m2\
)。
-
打开
settings.xml
文件:
使用文本编辑器打开settings.xml
文件,以进行编辑。 -
在
<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)的镜像。这意味着当您从中央仓库获取依赖项时,实际上会从阿里巴巴的镜像仓库获取。
-
保存并关闭文件:
保存对settings.xml
文件的更改,并关闭文本编辑器。 -
测试更改:
打开终端或命令提示符,运行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项目的源代码、资源文件和测试代码。下面我会详解每个目录的作用:
-
src/main/java:
- 这个目录用于存放项目的主要源代码,通常是Java类文件。
- 你的应用程序的核心业务逻辑和功能代码应该位于这个目录下。
- Maven会编译这个目录中的Java代码,并将编译生成的类文件放入输出目录(通常是
target/classes
)。
-
src/main/resources:
- 这个目录用于存放项目的主要资源文件,例如配置文件、模板文件、静态文件等。
- 与Java源代码一样,这些资源文件也会被包含在项目的构建输出中,可以在运行时访问。
- Maven会将这个目录的内容复制到输出目录(通常是
target/classes
),以便在应用程序运行时使用。
-
src/test/java:
- 这个目录用于存放项目的测试代码,通常是JUnit或TestNG测试类。
- 测试代码用于验证主要源代码的正确性,它们不包括在最终的应用程序中。
- Maven会编译这个目录中的测试代码,并将编译生成的测试类文件放入测试输出目录(通常是
target/test-classes
)。
-
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文件,我将解释每个元素的作用:
-
<?xml version="1.0" encoding="UTF-8"?>
: 这是XML声明,指定了XML的版本和字符编码。 -
<project>
: 这是根元素,包含了整个项目的描述。 -
xmlns
属性:xmlns
定义了 XML 命名空间,这里指定了 Maven POM 命名空间。 -
xmlns:xsi
属性:这是用于 XML 架构实例命名空间的属性。 -
xsi:schemaLocation
属性:这个属性指定了 XML 架构的位置。它告诉解析器去哪里查找 XML 文件的架构定义。 -
<modelVersion>4.0.0</modelVersion>
: 这个元素指定了POM模型的版本。通常,您会将其设置为4.0.0,以指示使用Maven的最新版本。 -
<groupId>com.itheima</groupId>
: 这个元素定义了项目的组织或公司的唯一标识符。通常以反转的域名形式命名。 -
<artifactId>project-java</artifactId>
: 这个元素定义了项目的唯一标识符,通常是项目的名称。 -
<version>1.0</version>
: 这个元素定义了项目的版本号。 -
<packaging>jar</packaging>
: 这个元素定义了项目的打包类型。在这种情况下,它指示项目将被打包为JAR文件。 -
<dependencies>
: 这是一个包含项目依赖项的元素的容器。 -
<dependency>
: 这是一个定义项目依赖项的元素。 -
<groupId>junit</groupId>
: 这个元素定义了依赖项的组织或公司的唯一标识符。在这里,依赖项是JUnit测试框架。 -
<artifactId>junit</artifactId>
: 这个元素定义了依赖项的唯一标识符,通常是库或框架的名称。 -
<version>4.12</version>
: 这个元素定义了依赖项的版本号。
以上是POM文件中各个元素的作用和解释。POM文件用于配置和构建Maven项目,确保项目能够正确地构建和管理其依赖项。
5.项目构建
D:\Project\src
在D:\Project 下执行
如:D:\Project>mvn install
下面是几个常用的mvn
命令以及它们的作用:
-
mvn compile
:- 作用:编译项目的源代码。
- 这个命令会将项目的源代码编译成字节码文件,但不会打包生成可执行的 JAR 或 WAR 文件。编译后的文件通常存储在
target/classes
目录下。
-
mvn clean
:- 作用:清理项目的构建目录和临时文件。
- 这个命令会删除
target
目录以及在构建过程中生成的其他临时文件,以便开始一个干净的构建。
-
mvn test
:- 作用:运行项目的单元测试。
- 这个命令会执行项目中的单元测试,并输出测试结果。通常,测试类和测试方法需要遵循一定的命名约定,以便 Maven 自动识别和执行。
-
mvn package
:- 作用:将项目编译并打包成可执行的 JAR(Java 应用程序)或 WAR(Web 应用程序)文件。
- 这个命令会编译项目的源代码,并将其打包成 JAR 或 WAR 文件,生成的包通常存储在
target
目录下。
-
mvn install
:- 作用:将项目构建结果安装到本地 Maven 仓库。
- 这个命令会将项目构建产物(通常是 JAR 文件)复制到本地 Maven 仓库,以便其他项目可以依赖该构建产物。这在多模块项目中很有用。
这些命令是 Maven 中常用的基本构建命令,它们允许您执行不同的构建任务,从编译到测试和打包。根据项目的需求,您可以选择执行其中一个或多个命令。
6.第一个Maven程序-插件创建Maven工程
以下是创建不同类型的 Maven 项目的命令示例:
-
创建一个普通 Java 项目:(创建文件夹下不能是一个maven结构,不能有pom文件)
mvn archetype:generate -DgroupId=com.example -DartifactId=my-java-project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
这个命令将创建一个简单的 Java 项目,用于编写 Java 应用程序。
-
创建一个 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
本文作者: 永生
本文链接: https://yys.zone/detail/?id=302
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
发表评论
评论列表 (0 条评论)
暂无评论,快来抢沙发吧!