您的位置:首页 > 运维架构 > Linux

Maven入门指南(基于Linux)

2018-03-13 22:31 615 查看
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>
</ex
4000
ecution>
</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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息