明确一下maven具体能帮助我们做些什么
- 项目构建
- 依赖管理
- 模块化开发
- 代码测试
- 项目信息管理
- 持续集成
maven的下载安装
1:windows 系统解压maven项目到指定目录 D:\sof\apache-maven-3.3.3-bin mven下载路径,
目录结构如下
2:解压完成之后需要进行简单的配置才可使用
环境变量配置 M2_HOME-> D:\sof\apache-maven-3.3.3-bin
环境变量path添加 ${M2_HOME}\bin
maven经过以上两步基本配置完成, cmd 控制台输入 mvn -version 查看maven版本信息
maven相关配置文件
settings.xml存在于两个地方:
1.安装的地方:$M2_HOME/conf/settings.xml (全局配置)
2.用户的目录:${user.home}/.m2/settings.xml(用户配置)
.m2的生成可使用mvn命令
setting相关配置
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> 本地仓库目录配置 <localRepository>C:\Users\x\.m2\repository</localRepository> 远程仓库认证信息配置 <servers> <server> <id>nexus2</id> 与仓库id对应 <username>admin</username> <password>admin123</password> </server> </servers> 远程仓库镜像配置 <mirrors> <mirror> <id>external</id> 镜像id <mirrorOf>external:*,central</mirrorOf>被镜像仓库id <name>Human Readable Name for this Mirror.</name> <url>http://xxxx:8081/nexus/content/groups/public/</url> </mirror> </mirrors> 仓库配置 <repositories> <repository> <id>admin</id> 仓库id <name>Repositorynexus</name> <url>http://xxxx:8081/nexus/content/groups/public/</url> </repository> </repositories> 自定义属相配置 <profiles> <profile> <id>dev</id> 配置ID <properties> <profiles.active>dev</profiles.active> <finalName>web</finalName> </properties> <repositories> <repository> <id>admin</id> <name>Repositorynexus</name> <url>http://xxxx:8081/nexus/content/groups/public/</url> </repository> </repositories> </profile> <!--发布环境 --> <profile> <id>prod</id> 配置ID <properties> <profiles.active>dev</profiles.active> <finalName>web</finalName> </properties> <repositories> <repository> <id>admin</id> <name>Repositorynexus</name> <url>http://xxxx:8081/nexus/content/groups/public/</url> </repository> </repositories> </profile> </profiles> <activeProfiles> <activeProfile>dev</activeProfile> 启用自定义属相配置 根据ID </activeProfiles> </settings>
仓库镜像配置
<mirrorOf>external:*</mirrorOf> 匹配所有不在本机上的远程仓库(使用localhost 和 file://协议的除外)
<mirrorOf>*</mirrorOf> 匹配所有远程仓库
<mirrorOf>repo1,repo2</mirrorOf> 对rpo1和repo2进行镜像,使用逗号分隔,rep1的为仓库ID
<mirrorOf>*,!repo2</mirrorOf> 匹配所有远程仓库,repo2除外,使用感叹号将仓库从匹配中排除
仓库分类
- 本地仓库
- 远程仓库(私服 中央仓库 其他公共仓库都输入远程仓库)
- 私服
- 中央仓库
(apache-maven-3.5.2\lib -> maven-model-builder-3.5.2.jar -> org\apache\maven\model\pom-4.0.0.xml(超级pom))
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
- 其他公共仓库
所有pom(项目对象模型都继承超级pom) 从超级pom中可看出maven约定项目的目录结构如下
<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- START SNIPPET: superpom --> <project> <modelVersion>4.0.0</modelVersion> <repositories> <repository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> <releases> <updatePolicy>never</updatePolicy> </releases> </pluginRepository> </pluginRepositories> <build> <directory>${project.basedir}/target</directory> <outputDirectory>${project.build.directory}/classes</outputDirectory> <finalName>${project.artifactId}-${project.version}</finalName> <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory> <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory> <scriptSourceDirectory>${project.basedir}/src/main/scripts</scriptSourceDirectory> <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory> <resources> <resource> <directory>${project.basedir}/src/main/resources</directory> </resource> </resources> <testResources> <testResource> <directory>${project.basedir}/src/test/resources</directory> </testResource> </testResources> <pluginManagement> <!-- NOTE: These plugins will be removed from future versions of the super POM --> <!-- They are kept for the moment as they are very unlikely to conflict with lifecycle mappings (MNG-4453) --> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.3</version> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.2-beta-5</version> </plugin> <plugin> <artifactId>maven-dependency-plugin</artifactId> <version>2.8</version> </plugin> <plugin> <artifactId>maven-release-plugin</artifactId> <version>2.3.2</version> </plugin> </plugins> </pluginManagement> </build> <reporting> <outputDirectory>${project.build.directory}/site</outputDirectory> </reporting> <profiles> <!-- NOTE: The release profile will be removed from future versions of the super POM --> <profile> <id>release-profile</id> <activation> <property> <name>performRelease</name> <value>true</value> </property> </activation> <build> <plugins> <plugin> <inherited>true</inherited> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <inherited>true</inherited> <artifactId>maven-javadoc-plugin</artifactId> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <inherited>true</inherited> <artifactId>maven-deploy-plugin</artifactId> <configuration> <updateReleaseInfo>true</updateReleaseInfo> </configuration> </plugin> </plugins> </build> </profile> </profiles> </project> <!-- END SNIPPET: superpom -->
超级pom中已经默认定义了项目的基本结构
<directory>${project.basedir}/target</directory> 项目构建后目标的输出目录 <outputDirectory>${project.build.directory}/classes</outputDirectory>源码目录 <finalName>${project.artifactId}-${project.version}</finalName>项目名称命名方式 <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>测试代码源码目录 <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>源码目录 <scriptSourceDirectory>${project.basedir}/src/main/scripts</scriptSourceDirectory>脚本源码目录 <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>测试代码目录
${project.build.directory} = <directory>${project.basedir}/target</directory> ${project.basedir} = 项目目录
约定的项目目录结构
src
main
java
test
java
target
${project.artifactId}-${project.version}.jar/war...
class
test-class
pom
相关推荐
通过本文的介绍,读者应该对如何使用exec-maven-plugin有了深入的理解,能够将其应用到实际的Maven项目中。 本文详细介绍了exec-maven-plugin的基本概念、配置方法、执行简单和系统脚本、捕获命令输出、条件执行、...
Maven 是一个项目管理和综合工具,广泛用于 Java 应用程序的构建、依赖管理和项目信息管理。通过这个插件,开发人员可以在 Eclipse 中直接执行 Maven 命令,如编译、测试、打包和部署,而无需离开IDE。 Apache ...
Maven 是 Apache 软件基金会的一个关键项目,它是一个项目管理和综合工具,主要用于Java应用程序的构建、依赖管理和项目信息管理。Maven 的核心理念是通过一个标准化的构建生命周期来简化软件开发流程,它通过读取...
Apache Maven 是一个强大的Java项目管理和综合工具,它简化了构建过程,通过标准化构建生命周期和依赖管理,使得开发者能够更高效地构建、测试和部署Java应用程序。Maven 3.3.9是Maven的一个稳定版本,它包含了多个...
Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。它基于项目对象模型(Project Object Model,POM)的概念,使得项目的构建、依赖管理以及报告变得简单且规范。Maven通过读取POM.xml配置...
5. `README.txt`:通常会提供有关如何安装和配置Maven的基本指南。 使用Maven时,开发者可以声明项目依赖,Maven会自动下载这些依赖并管理它们的版本,避免版本冲突。依赖管理是通过在POM文件中指定坐标(groupId、...
Maven是一个项目管理工具,它可以帮助开发者管理和构建Java项目,而Jetty则是一个轻量级的嵌入式Servlet容器,常用于快速开发、测试以及部署Web应用。本文将详细讨论如何将Jetty与Maven进行集成,并介绍关键的`maven...
Maven的生命周期是另一个关键概念,它定义了一系列构建阶段,如编译(compile)、测试(test)、打包(package)、验证(verify)、安装(install)和部署(deploy)。每个阶段都有一系列默认的目标或任务,这些任务...
Maven 是一个强大的项目管理和构建工具,主要应用于Java开发领域。它通过使用一种标准化的项目对象模型(Project Object Model,POM),可以帮助开发者管理项目的依赖、构建过程以及报告。Apache Maven 3.8.1是Maven...
`maven-archetype-quickstart` 就是这样一个archetype,它提供了一个简单的Java应用结构,包含了一个主类和一个测试类,适合初学者或者快速原型开发。 **快速启动Archetype的使用步骤:** 1. **安装Archetype**:...
- `M2_HOME`:指向Maven安装目录,即解压后的`apache-maven-3.6.2`目录。 - `PATH`:添加`M2_HOME/bin`到`PATH`环境变量,使得在任何目录下都能运行`mvn`命令。 例如,在Unix/Linux系统中,可以在`.bashrc`或`.bash...
Maven的插件机制允许扩展其功能,如生成文档、执行代码分析、部署应用等。每个插件有自己的目标(goals),可以通过`mvn plugin:goal`命令执行。 **9. 性能优化** 对于大型项目,Maven的构建速度可能会成为问题。...
使用Maven,开发者可以利用命令行工具进行各种操作,如初始化项目(`mvn archetype:create`)、编译源代码(`mvn compile`)、运行测试(`mvn test`)、打包应用(`mvn package`)、安装到本地仓库(`mvn install`)...
Apache Maven 是一个强大的项目管理工具,广泛用于Java应用程序的构建、管理和依赖管理。Maven 使用一种标准的项目对象模型(Project Object Model,POM),通过POM文件来配置项目的构建过程,解决和管理项目的依赖...
- Maven提供了一系列的Archetypes,可以快速创建新项目的初始结构,根据项目类型(如Web应用、Java EE应用等)生成基础的POM.xml和项目结构。 通过理解和熟练使用Apache Maven,开发者可以大大提高开发效率,简化...
1. **安装和配置Maven**:确保本地系统已安装并配置好Maven环境,这包括设置Maven的环境变量和本地仓库路径。 2. **创建项目**:在命令行中,使用`mvn archetype:generate`命令,并指定对应的archetype id,如`...
5. **模块化开发**:对于大型项目,Maven 支持多模块结构,一个父POM可以管理多个子模块,方便进行大型应用的构建和管理。 6. **报表生成**:Maven 可以生成各种报表,如Javadoc、测试覆盖率报告、依赖树等,有助于...
Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。Maven 使用一种标准化的项目对象模型(Project Object Model,POM),通过POM来管理项目的构建、报告和文档等生命周期。Apache Maven ...
Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。它基于项目对象模型(Project Object Model,POM)的概念,能够自动化构建过程,管理依赖关系,并提供一套标准的项目结构。Apache Maven...
《深入解析修改版tomcat7-maven-plugin-2.2.jar》 在Java开发领域,Maven作为项目管理和构建工具,极大地简化了依赖管理和构建流程。而Tomcat,作为广泛使用的开源Servlet容器,是Java Web应用部署的首选平台。当...