前言:初次发帖,此文为maven的初级文章,老鸟飞过。(java技术交流群:178547149)
引子:maven是一款基于项目对象模型(POM)的项目构建工具,可以轻松的帮助开发人员构建项目,生成站点,打包jar等操作,鄙人对maven不算很深入,言多必失,o(︶︿︶)o 。
一、环境设置(Windows)
1.在此之前请确保本机已安装jdk,并配置好了环境变量。所谓环境设置就是使maven的相关命令能在dos下识别,下载maven压缩包。直接解压到某一目录下,其中
---bin目录:包含运行maven命令的脚本;
---boot目录:包含运行maven所需的类加载jar包;
---conf目录:包含一个全局配置文件;
---lib目录:与maven相关的所有jar包;
记住其路径,打开环境变量设置对话框,新建M2_HOME变量,其值为maven的解压路径,在path变量中追加%M2_HOME%\bin,打开dos键入mvn -v,出现下图则表示成功。
2.用maven构建项目时,首先会从http://maven.apache.org/这个网站找所需的jar包,然后下载到本地仓库(repository)方便以后重用,当然只需下载一次。到maven的conf目录找到settings.xml配置文件,找到如下节点:
<!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ~/.m2/repository <localRepository>/path/to/local/repo</localRepository> -->
默认的本地仓库路径为 ~/.m2/repository,~表示为当前登陆的用户根目录。现在我们修改它的默认路径,到C:\Documents and Settings\Administrator\.m2目录下找到settings.xml文件,修改如下图所示。
<!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ~/.m2/repository --> <localRepository>D:\\soft\\repository</localRepository>
也就是说以后所缺的jar包下载后都会放到D盘的soft/repository文件夹下,还有一点需要说明,maven的conf文件夹下的settings.xml配置文件是基于全局的,计算机上所有的用户都将受到影响,而后者是用户范围的,只对当前用户
产生影响,为了避免一些无意识的操作而影响到所有的用户,一般推荐用户范围的,如果没找到.m2文件夹,先跳到第二步
构建项目,然后回过头再来找找就有了。
二、构建项目
1.首先创建一个文件夹,名称随便,约定成俗,我新建了一个HelloWorld文件夹。
2.在HelloWorld文件夹新建src目录与pom.xml文件,名称请跟我一样,谢谢。
3.然后在src目录下新建main与test文件夹,名称保持一致。
4.在main与test文件夹下分别新建java文件夹,名称一致。
5.接下来的文件夹可以算是package的名,我这为了方便在src与test的java目录下分别新建了maven/demo两个文件夹,现在你的文件夹应该是这样的:
6.有点烦哈,在src\main\java\maven\demo目录下新建一个HelloMM程序,代码如下:
package maven.demo; public class HelloMM{ public String SayHi(){ return "HelloMM"; } public static void main(String[] args){ System.out.print(new HelloMM().SayHi()); } }
7.囧,在src\test\java\maven\demo目录下新建一个TestApp测试程序,代码如下:
package maven.demo; import org.junit.Test; import org.junit.BeforeClass; import org.junit.Before; import static org.junit.Assert.assertEquals; public class TestApp{ HelloMM hi = null; @BeforeClass public static void setUp(){ System.out.println("BeforeClass!"); } @Before public void setBefore(){ hi = new HelloMM(); System.out.println("Before!"); } @Test public void isTest(){ assertEquals("HelloMM",hi.SayHi()); } }
8.==,好像忘记啥东西了,怎么可以少了一个最重要的pom.xml呢,最后我们写写项目构建xml文件,代码如下:
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>maven.demo</groupId><!-- 坐标ID唯一的 --> <artifactId>maven-demo</artifactId><!-- 构件ID --> <packaging>jar</packaging><!-- 打包形式 --> <version>1.0-snapshot</version><!-- 内部开发版本 --> <url>http://maven.apache.org/</url><!-- jar包的来源 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- 字符编码 --> </properties> <dependencies><!-- 依赖包 --> <dependency> <groupId>junit</groupId><!-- 坐标ID --> <artifactId>junit</artifactId> <scope>compile</scope><!-- 作用域 --> <version>4.8.2</version><!-- 版本号 --> </dependency> </dependencies> </project>
pom.xml用于定义项目的行为,属性,依赖等等,所有配置都可完成。
至此我们的项目搭建算是完成,有点繁碎呢,后面有更简单的做法,暂且不表。
三、编译项目
鸡冻人心的时刻到了,打开你的dos黑窗口,cd到HelloWorld文件夹,然后键入mvn compile,不出意外会出现下图:
可以看到maven会从网站下载所需的包,这里下载的是junit测试包,大家可以到本地仓库文件夹看到下载的jar包,运行次命令后你会看到HelloWorld文件夹下多了一个target文件夹,里面则是编译后的文件,如下图所示:
同样可以使用mvn test-compile命令对测试源代码进行编译,大家可以试试,接下来我们运行mvn test命令,对项目进行编译测试,会看到如下图所示:
现在把TestApp测试类改下,让它测试不通过,代码如下:
@Test public void isTest(){ assertEquals("Hello",hi.SayHi()); }
然后我们再次运行mvn test 命令,则会看到下图所示:
断言失败,单元测试失败。
四、打包项目
1.运行mvn clean package 命令,clean表示清除以前的编译文件(删除targer文件夹),package表示将整个项目打包,我们运行试试:
结果得到了4个文件夹和1个jar包,其中包括站点报告、打包文件等。
2.然后我们进入cd到target目录,运行java -cp maven-demo-1.0-snapshot.jar maven.demo.HelloMM
命令,这个时候会执行main方法,也就是输出"HelloMM"字符串,如下图所示:
3.做到这步还不行,通过java -jar命令执行生成的jar包会出现错误,如下图所示:
一个可执行的jar包必须指定一个main类,现在我们去实现它,找到pom.xml文件,增加如下节点:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.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>maven.demo.HelloMM</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>
4.再次运行mvn clean package 命令,记得要在pom.xml的目录下,执行命令后在target目录生成了两个jar包
maven-demo-1.0-snapshot.jar:打包文件,其中包括依赖包(junit);
original-maven-demo-1.0-snapshot.jar:打包文件的原始版本;
现在到target目录执行java -jar maven-demo-1.0-snapshot.jar命令,控制台输出"HelloMM",成功了。
5.接下来把项目导入到eclipse里,mvn eclipse:eclipse执行它,打开心爱的eclipse,import it!
6.至于在eclipse安装maven插件,运行命令等操作,有机会再讲。
7.最后说说简单创建项目命令。
普通的Java项目:
mvn archetype:create -DgroupId=com.yourcompany -DartifactId=myproject -DarchetypeArtifactId=maven-archetype-quickstart
普通的Web项目:
mvn archetype:create -DgroupId=com.yourcompany -DartifactId=myproject -DarchetypeArtifactId=maven-archetype-webapp
还有一个是mvn archetype:generate命令,一步一步创建maven项目,可以去试试。
其实都是大同小异,无非是指定groupid,dartifactid之类的。
五、结束语
总算写完了,貌似图贴的很多,如有错误,请大声指正。
相关推荐
Maven更新问题 今天Maven在更新的时候发现一直更新不成功,总结下解决方法。 在apache-maven-3.5.2/conf/setting.xml中加入以下配置即可解决 alimaven aliyun maven ...
MAVEN安装包:apache-maven-3.0.5.zip
Maven 教程:基础篇——尚硅谷学习笔记 2022年
自己实现的自定义maven插件:可以根据配置的接口类和参数类,生成对应的word版本的API文档。还可以自定义自己的模板文件。
zookeeper_demo maven项目:包含原生API、zkclient、Curator操作,并包含集群、分布锁等操作
maven版本
idea创建Maven项目时,报错显示Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources,并且Maven插件内看不到 mybatis-generator。如下图: 折腾了好久发现配置放错地方了,...
Apache Maven是一个软件项目管理和理解工具。 基于项目对象模型(POM)的概念,Maven可以从中心信息中管理项目的构建、报告和文档。
maven-android-plugin-samples, Android Maven 插件不推荐使用的示例 ! Android Maven 插件--示例项目警告这里项目的为 。 在版本 4.0.0 -rc.1的Android Maven 插件的所有示例项目都是实际插件代码库的一部分,并...
NULL 博文链接:https://waddy.iteye.com/blog/1990279
Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project
Maven: The Complete Reference The essential reference for anyone working with Apache Maven. Explore the details of the POM, Maven Settings, Maven Archetypes.
如何输入关键字,寻找需要依赖jar的MAVEN坐标,需要提供确切的MAVEN坐标 1.Sonatype Nexus 地址: https://repository.sonatype.org 2. Jarvana 地址: http://www.jarvana.com/jarvana 3.MVNbrowser 地址: ...
maven Maven 是一种流行且功能强大的项目管理工具,主要用于构建、发布和管理 Java 项目。本文将介绍 Maven 的基本概念、核心功能和优势,以及它在项目开发中的重要作用。 第一部分:Maven 的基本概念 解释 Maven...
Maven源:Apache Maven源
Linux的maven压缩包,在Windows系统中解压后,传到Linux系统中使用
maven the complete refrence 英文版
解决tomcat8-maven-plugin-3.0-r1655215.jar阿里云同有的问题。放到路径org\apache\tomcat\maven\tomcat8-maven-plugin\3.0-r1655215\就可以了
1.Maven下载: 下载地址:http://maven.apache.org/download.cgi 2.新增一个系统变量,变量名称为“MAVEN_HOME”,变量值为maven的下载目录。 3.此时打开Powershell窗口窗口输入“mvn -version”输出以下信息表示...