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源码目录
我们在Linux下创建自己的目录,包的名字为
此时我们新建两个Java类文件,分别为
以及
下载安装maven,输入
然后我们回到
写入
这是此时的项目结构目录
看到如下运行结果,说明编译成功
编译成功以后可以查看目录结构,你会发现编译后的.class文件存在于
使用此命令,Maven会将当前Java项目进行打包处理,默认生成.jar包(当然也可以通过配置生成.war包,只需要更改
可以看到
Maven中央仓库 是Maven官方的远程仓库,在能连接到服务器的情况下,Maven项目中的依赖库可以从中央仓库下载到本地仓库
本地仓库是Maven在本机上的依赖包仓库,添加依赖包以后Maven会优先从本地仓查找是否存在依赖包,若不存在,则去中央仓下载。
若中央仓库服务器无法连接(比如公司内网环境),Maven会去远程仓库下载,一般公司内搭建有自己的远程仓库。
而我们可以把自己的项目打包,并放入本地仓,以后的项目如果用到该项目文件,则可以直接使用Maven引入依赖。
成功以后,可以去Maven本地仓查看是否已经存在自己的项目,Ubuntu默认的本地仓库是
根据
我们可以看到我们的项目已经被打包放入Maven本地仓
这里要说明一点,关于Maven本地仓位置:
配置在Maven安装目录下的 conf/settings.xml内
ubuntu17默认为
其中本地仓的目录配置在
可以看到默认目录是{user.home}/.m2/repository,因为我在root用户下安装,所以我的默认仓在/root/.m2/repository下(当然可以手动改动)
比如常见的
而有了Maven构建项目以后,我们只需要去中央仓库搜索mysql,找到对应的包
把依赖包的具体信息(
这样再使用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 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 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
相关文章推荐
- win7基于maven和eclipse连接远程Linux服务器的hadoop2.0集群的入门程序
- 8-基于OMAPL138开发板的Linux应用程序开发入门指南
- maven入门指南—03 maven常见错误与解决方法
- 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(二) 理解消息循环和窗口过程
- maven-assembly-plugin 入门指南
- Maven入门指南(二)
- Maven入门指南③:坐标和依赖
- 写给.NET程序员的Linux入门指南
- Maven入门指南③:坐标和依赖
- 基于ARM嵌入式Linux学习开始到入门
- Maven入门指南① :Maven 快速入门及简单使用
- maven Nexus入门指南(图文)
- 20171109L09-02老男孩Linux运维实战培训-Lamp系列-Apache服务生产实战应用指南05-基于端口的
- linux常用命令之bash 入门指南
- Linux-HA 入门指南(引用)
- Maven入门指南② :Maven 常用命令,手动创建第一个 Maven 项目
- 新手如何学好linux入门指南
- 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(三)
- 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南四——使用 GDI 函数
- Maven入门指南④:仓库