前言:初次发帖,此文为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笔记:maven-overlay-实战笔记” 在 Maven 的世界里,"overlay" 是一个重要的概念,主要用于Web项目的构建和部署。Maven overlay 技术允许你将多个项目的输出“重叠”在一起,形成一个新的项目,...
- **仓库(Repositories):** Maven 从远程仓库(如 Maven Central)下载依赖,并将它们缓存在本地仓库中。 - **插件(Plugins):** Maven 插件提供了实现各种生命周期目标的能力。 #### 二、安装和配置 Maven *...
**Maven教程:基础篇——尚硅谷学习笔记 2022年** Maven是一个强大的Java项目管理和构建工具,由Apache软件基金会开发。它通过提供一个标准的项目对象模型(Project Object Model,POM)来简化项目的构建过程,并...
1. **依赖管理**:Maven自动管理项目的依赖关系,从Maven中央仓库下载所需的库文件。开发者只需在POM.xml中声明依赖,Maven会处理版本冲突和下载过程。 2. **插件系统**:Maven拥有丰富的插件生态系统,允许扩展其...
1. **下载**: 从 Apache Maven 官方网站下载最新或特定版本的 Maven,如 apache-maven-3.0.5.zip。 2. **解压**: 解压缩下载的 zip 文件到指定目录,如 `C:\Program Files`。 3. **配置环境变量**: 配置 `M2_HOME` ...
idea创建Maven项目时,报错显示Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources,并且Maven插件内看不到 mybatis-generator。如下图: 折腾了好久发现配置放错地方了,...
3. **验证安装**:现在,你应该可以在命令行中运行`mvn -version`,如果一切正常,它将显示Maven的版本信息。 在Linux环境中,Maven可以与Git、JDK和其他开发工具无缝配合,用于构建Java项目。`mvn`命令支持各种...
Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。它通过定义项目的结构和依赖关系,使得构建、测试和部署过程变得更加规范和自动化。在本文中,我们将深入探讨Maven的核心概念、功能以及...
Maven 使用 tomcat8-maven-plugin 插件 Maven 是一个流行的构建自动化工具,它可以帮助开发者自动完成项目的编译、测试、打包、部署等任务。 Tomcat 是一个流行的 Web 服务器,Maven 提供了一个插件 tomcat8-maven-...
maven-android-plugin-samples, Android Maven 插件不推荐使用的示例 ! Android Maven 插件--示例项目警告这里项目的为 。 在版本 4.0.0 -rc.1的Android Maven 插件的所有示例项目都是实际插件代码库的一部分,并...
它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。...
在<plugins></plugins>中添加 <groupId>org.apache.maven.plugins <artifactId>maven-compiler-plugin <version>3.8.1 <source>1.8 <target>1.8 </plugin>
你可以从 Maven 官方网站(https://maven.apache.org)下载最新版本的 Maven,并按照官方文档进行安装。 配置 Maven 路径:在 IntelliJ IDEA 中打开设置(Settings)窗口,选择 “Build, Execution, Deployment” -...
解决tomcat8-maven-plugin-3.0-r1655215.jar阿里云同有的问题。放到路径org\apache\tomcat\maven\tomcat8-maven-plugin\3.0-r1655215\就可以了
Maven: The Complete Reference The essential reference for anyone working with Apache Maven. Explore the details of the POM, Maven Settings, Maven Archetypes.
Maven是Java世界中的一款强大的项目管理和构建工具,它极大地简化了软件项目的构建、依赖管理和文档生成过程。...无论是新手还是经验丰富的开发者,都可以从Maven 3.6中受益,享受更加流畅的开发体验。
9. 插件管理:除了依赖,Maven还允许开发者通过<build><plugins>标签来声明和配置构建过程中的插件,如编译、测试、打包等,这些插件也可以从Maven仓库中获取。 10. Maven生命周期与构建阶段:Maven拥有预定义的...