网站首页 > java教程 正文
Apache Maven基础
一、简介
Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片段能管理一个项目的构建、报告和文档等步骤。
Maven也可被用于构建和管理各种项目,例如C#,Ruby,Scala和其他语言编写的项目。Maven曾是Jakarta项目的子项目,现为由Apache软件基金会主持的独立Apache项目。
二、Linux下安装Maven步骤
maven需要jdk环境,我们执行:
yum install java
1.首先到Maven官网下载安装文件,目前最新版本为3.0.3,下载文件为
apache-maven-3.0.3-bin.tar.gz,下载也可以使用wget命令;
2.进入下载文件夹,找到下载的文件,运行如下命令解压
tar -xvf apache-maven-3.0.3-bin.tar.gz
解压后的文件夹名为apache-maven-3.0.3
3.使用mv命令将apache-maven-3.0.3文件夹拷贝到自己指定的文件夹,比如/usr/local/下
mv apache-maven-3.0.3 /usr/local/
4.配置环境变量,编辑/etc/profile文件,添加如下代码
MAVEN_HOME=
/usr/local/apache-maven-3.0.3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
所有配置:(包括java、mavean、nexus)
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
MAVEN_HOME=//opt/maven-t/apache-maven-3.6.1
export PATH=$JAVA_HOME/bin:JRE_HOME/bin:$PATH:$MAVEN_HOME/bin:$NEXUS_H OME/bin
export JAVA_HOME JRE_HOME CLASSPATH PATH
5.保存文件,并运行如下命令使环境变量生效
source /etc/profile
6.在控制台输入如下命令,如果能看到Maven相关版本信息,则说明Maven已经安装成功
mvn -v
三、常用命令
1、mvn compile 编译,将Java 源程序编译成 class 字节码文件。
2、mvn test 测试,并生成测试报告
3、mvn clean 将以前编译得到的旧的 class 字节码文件删除
4、mvn pakage 打包,动态 web工程打 war包,Java工程打 jar 包。
5、mvn install 将项目生成 jar 包放在仓库中,以便别的模块调用
四、实例测试
1. 创建一个Maven project
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
执行完命令后maven显示执行过程,成功会显示Build Success。
命令执行成功后,会发现当前目录多了一个my-app的目录,my-app结构如下:
├── pom.xml
└── src
├── main
│ └── java
│ └── com
│ └── mycompany
│ └── app
│ └── App.java
└── test
└── java
└── com
└── mycompany
└── app
└── AppTest.java
项目目录结构中主要包含三部分:
- xml Maven自带配置文件——Maven的核心
- src/main/java Java代码及资源目录
- src/main/test Java测试代码及资源目录
2. pom.xml介绍
pom.xml作为Maven最核心的一部分,具体内容如下:
<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.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
3. Build Project
Maven项目创建完毕之后就是想如何将代码转为我们需要的Jar或者War包。
在pom.xml文件当前路径执行下面命令,进行打包。
mvn package
Maven最后显示BUILD SUCCESS,执行命令成功。生成的jar包会在外面项目target目录下
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
得到结果如下
Hello World!
五、修改仓库url
1、统一修改仓库地址
可以直接修改Mavenconf文件夹中的setting.xml文件,或者在.m2文件夹下建立一个setting·xml文件。
setting.xml里面有个mirrors节点,用来配置镜像URL。mirrors可以配置多个mirror,每个mirror有id,name,url,mirrorOf属性。
- id是唯一标识一个mirror
- name貌似没多大用,相当于描述
- url是官方的库地址
- mirrorOf代表了一个镜像的替代位置,例如central就表示代替官方的中央库。
mirror也不是按settings.xml中写的那样的顺序来查询的。所谓的第一个并不一定是最上面的那个。
当有id为B,A,C的顺序的mirror在mirrors节点中,maven会根据字母排序来指定第一个,所以不管怎么排列,一定会找到A这个mirror来进行查找,当A无法连接,出现意外的情况下,才会去B查询。
<mirrors>
...
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
2、分别给每个项目配置不同的中央库
http://10.141.196.243:8081/repository/repo_mvn_group/
直接在项目的pom.xml中修改中央库的地址。如下:
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
</repositories>
猜你喜欢
- 2025-09-01 Guacamole安装部署_安装camhi
- 2025-09-01 阿里云服务器-安装tomcat_阿里云服务器安装yum
- 2025-09-01 Linux下安装常用软件都有哪些?做了一个汇总列表,你看还缺啥?
- 2025-09-01 测试员必备:Linux下安装JDK 1.8你必须知道的那些事
- 2025-09-01 10分钟3个步骤集成使用SkyWalking
- 2025-09-01 在linux 上搭建jenkens前端自动化打包部署
- 2025-09-01 开源:NginxWebUI一款图形化管理Nginx配置的工具
- 2025-09-01 分享一个开源下载简单配置不用安装数据库就可以使用的个人博客
- 2025-09-01 centos7 系统安装部署应用_centos7安装应用程序
- 2025-09-01 「开源推荐」推荐一款搭建svn服务器的神器,可以用Web管理了
你 发表评论:
欢迎- 最近发表
-
- 如何优雅地记录操作日志?_操作日志怎么实现
- 开发利器丨如何使用ELK设计微服务中的日志收集方案?
- Java应用日志如何与Jaeger的trace关联
- Springboot强大的日志功能你真的了解吗?这些功能你肯定不知道
- 深入探索 Spring Boot3 中日志的自定义封装处理操作
- SpringBoot+Kafka+ELK 完成海量日志收集(超详细)
- SpringBoot中统一日志管理_springboot日志每天一个文件
- 16.3K Star!简洁高效的Java权限认证与会话管理框架——Sa-Token
- 27 | API网关:系统的门面要如何做呢?
- 微服务网关—Zuul1.0和2.0我们该如何选择?
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)