概述
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
在Java开发中,Maven的地位已经不言而喻了,相比起Ant它更优秀,当然在gradle面前,Maven也存在着臃肿的问题,可以说Maven也会朝着更简洁的方向发展,就像Spring也在逐渐的去除繁重的xml配置,更不用提Java10各种提案的激进思路,但是如今国内外Maven的使用依旧是比较主流。
我们今天基于Ubuntu-server 17版本进行Maven项目的构建。
由于Maven是有自己的文件目录结构的:
但其最基本只需要java源码目录
└── src
└── main
└── java
└── 我们自己的包
我们在Linux下创建自己的目录,包的名字为hello
(对应的文件夹名相同)
mkdir -p src/main/java/hello
此时我们新建两个Java类文件,分别为src/main/java/hello/HelloWorld.java
package hello;
public class HelloWorld {
public static void main(String[] args) {
Greeter greeter = new Greeter();
System.out.println(greeter.sayHello());
}
}
以及src/main/java/hello/Greeter.java
package hello;
public class Greeter {
public String sayHello() {
return "Hello world!";
}
}
要注意的是包名要和文件夹同名,类名要和文件同名(JAVA最基础的部分)
此时我们已经根据Maven的目录结构搭建好了自己的目录和类文件,在Ubuntu(17及以上版本)下,使用
apt install maven
下载安装maven,输入mvn -version
,可以看到Maven安装成功
然后我们回到 src
的上级目录,新建文件 pom.xml
,这个是Maven构建项目的配置文件,其中给出了项目名称,版本号,项目描述以及依赖库等。
<?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>org.springframework</groupId>
<artifactId>gs-maven</artifactId>
<packaging>jar</packaging>
<version>0.1.0</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>hello.HelloWorld</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
写入pom.xml
这是此时的项目结构目录
1. 在当前目录下,使用Maven进行编译
mvn compile
看到如下运行结果,说明编译成功
编译成功以后可以查看目录结构,你会发现编译后的.class文件存在于 target
目录下,进图 classes
目录下,可以使用 java hello.HelloWorld
启动JVM运行项目
2.在当前目录下,使用Maven进行打包
mvn package
使用此命令,Maven会将当前Java项目进行打包处理,默认生成.jar包(当然也可以通过配置生成.war包,只需要更改pom.xml
文件中的packaging
属性为war)
可以看到 target/
目录下的 gs-maven-0.1.0.jar
(maven会使用artifactId
加version
的形式命名)
3.在当前目录下,将当前项目安装进Maven本地仓库
Maven有三种依赖仓库:1.中央仓库 2.本地仓库 3.远程仓库
- Maven中央仓库 是Maven官方的远程仓库,在能连接到服务器的情况下,Maven项目中的依赖库可以从中央仓库下载到本地仓库
- 本地仓库是Maven在本机上的依赖包仓库,添加依赖包以后Maven会优先从本地仓查找是否存在依赖包,若不存在,则去中央仓下载。
- 若中央仓库服务器无法连接(比如公司内网环境),Maven会去远程仓库下载,一般公司内搭建有自己的远程仓库。
而我们可以把自己的项目打包,并放入本地仓,以后的项目如果用到该项目文件,则可以直接使用Maven引入依赖。
mvn install
成功以后,可以去Maven本地仓查看是否已经存在自己的项目,Ubuntu默认的本地仓库是 /root/.m2/repository/
cd /root/.m2/repository/
根据pom.xml
文件中 groupId
是org.springframework
我们可以看到我们的项目已经被打包放入Maven本地仓
这里要说明一点,关于Maven本地仓位置:
配置在Maven安装目录下的 conf/settings.xml内
ubuntu17默认为 /usr/share/maven/conf/settings.xml
其中本地仓的目录配置在
可以看到默认目录是{user.home}/.m2/repository,因为我在root用户下安装,所以我的默认仓在/root/.m2/repository下(当然可以手动改动)
4.在项目中,使用Maven自动引入依赖包
这是Maven尤其重要的特性,只需要配置pom.xml文件,就再也不需要去手动配置BuildPath,然后把各种依赖库的包加入到文件夹里了。
比如常见的 MySQL Connector
,我们平时需要手动下载,然后把它放到Java项目的BuildPath中(以eclipse构建项目为例)
而有了Maven构建项目以后,我们只需要去中央仓库搜索mysql,找到对应的包
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
把依赖包的具体信息(groupId,artifactId,version
),添加到自己项目的pom.xml
中,就可以在项目中随意的使用这些依赖包了。
<version>0.1.0</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>hello.HelloWorld</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<!-- 下面是新添加的代码块,dependencies元素要在project内 -->
<dependencies>
<!-- 每一个 dependency 元素信息可以从Maven中央仓找到 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
</dependencies>
</project>
这样再使用Maven编译或者打包项目,依赖的包就可以自动下载并且正常引入(import)到项目中。
本文基于:
Spring GETTING STARTED -Building Java Projects with Maven
参考资料:
https://www.cnblogs.com/ysocean/p/7420373.html
https://maven.apache.org/plugins/maven-compiler-plugin/index.html
最后
以上就是淡淡小松鼠为你收集整理的Maven入门指南(基于Linux)的全部内容,希望文章能够帮你解决Maven入门指南(基于Linux)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复