`
foxinmy
  • 浏览: 6172 次
  • 性别: Icon_minigender_1
  • 来自: 湘
社区版块
存档分类
最新评论

Maven初探:一切从HelloMM开始!

阅读更多

     前言:初次发帖,此文为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,出现下图则表示成功。

 

     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两个文件夹,现在你的文件夹应该是这样的:

 

     maven bulid

     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,不出意外会出现下图:

 

mvn comile

 

  可以看到maven会从网站下载所需的包,这里下载的是junit测试包,大家可以到本地仓库文件夹看到下载的jar包,运行次命令后你会看到HelloWorld文件夹下多了一个target文件夹,里面则是编译后的文件,如下图所示:

 

   maven-compile-target

  同样可以使用mvn test-compile命令对测试源代码进行编译,大家可以试试,接下来我们运行mvn test命令,对项目进行编译测试,会看到如下图所示:

mvn test

 现在把TestApp测试类改下,让它测试不通过,代码如下:

 

@Test
	public void isTest(){
		assertEquals("Hello",hi.SayHi());
	}

 然后我们再次运行mvn test 命令,则会看到下图所示:

   mvn -test

断言失败,单元测试失败。

 

四、打包项目

      1.运行mvn clean package 命令,clean表示清除以前的编译文件(删除targer文件夹),package表示将整个项目打包,我们运行试试:

 

mvn -package

结果得到了4个文件夹和1个jar包,其中包括站点报告、打包文件等。

      2.然后我们进入cd到target目录,运行java -cp maven-demo-1.0-snapshot.jar maven.demo.HelloMM

命令,这个时候会执行main方法,也就是输出"HelloMM"字符串,如下图所示:

 

java -cp

     3.做到这步还不行,通过java -jar命令执行生成的jar包会出现错误,如下图所示:

 

java -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",成功了。

 

java -jar

   5.接下来把项目导入到eclipse里,mvn eclipse:eclipse执行它,打开心爱的eclipse,import it!

 

eclipse

   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之类的。

五、结束语

    总算写完了,貌似图贴的很多,如有错误,请大声指正。

分享到:
评论
2 楼 lg985 2011-12-30  
图片看不到。愣徘徊
1 楼 daixu2008 2011-12-30  
嗯。幸苦了

相关推荐

    Maven更新失败,Cannot resolve plugin org.apache.maven.plugins:maven-compiler-plugin:3.1

    Maven更新问题 今天Maven在更新的时候发现一直更新不成功,总结下解决方法。 在apache-maven-3.5.2/conf/setting.xml中加入以下配置即可解决 alimaven aliyun maven ...

    maven笔记:maven-overlay-实战笔记

    【标题】:“maven笔记:maven-overlay-实战笔记” 在 Maven 的世界里,"overlay" 是一个重要的概念,主要用于Web项目的构建和部署。Maven overlay 技术允许你将多个项目的输出“重叠”在一起,形成一个新的项目,...

    一份关于maven的教程!!!!!!!!

    - **仓库(Repositories):** Maven 从远程仓库(如 Maven Central)下载依赖,并将它们缓存在本地仓库中。 - **插件(Plugins):** Maven 插件提供了实现各种生命周期目标的能力。 #### 二、安装和配置 Maven *...

    Maven 教程:基础篇-尚硅谷学习笔记 2022年

    **Maven教程:基础篇——尚硅谷学习笔记 2022年** Maven是一个强大的Java项目管理和构建工具,由Apache软件基金会开发。它通过提供一个标准的项目对象模型(Project Object Model,POM)来简化项目的构建过程,并...

    最新Maven版本:apache-maven-3.6.0

    1. **依赖管理**:Maven自动管理项目的依赖关系,从Maven中央仓库下载所需的库文件。开发者只需在POM.xml中声明依赖,Maven会处理版本冲突和下载过程。 2. **插件系统**:Maven拥有丰富的插件生态系统,允许扩展其...

    MAVEN安装包:apache-maven-3.0.5.zip

    1. **下载**: 从 Apache Maven 官方网站下载最新或特定版本的 Maven,如 apache-maven-3.0.5.zip。 2. **解压**: 解压缩下载的 zip 文件到指定目录,如 `C:\Program Files`。 3. **配置环境变量**: 配置 `M2_HOME` ...

    Maven报错: Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources

    idea创建Maven项目时,报错显示Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources,并且Maven插件内看不到 mybatis-generator。如下图: 折腾了好久发现配置放错地方了,...

    Linux中的maven压缩包:apache-maven-3.5.4-bin.tar.gz

    3. **验证安装**:现在,你应该可以在命令行中运行`mvn -version`,如果一切正常,它将显示Maven的版本信息。 在Linux环境中,Maven可以与Git、JDK和其他开发工具无缝配合,用于构建Java项目。`mvn`命令支持各种...

    apache-maven-3.6.1【免费!免费!免费!】

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。它通过定义项目的结构和依赖关系,使得构建、测试和部署过程变得更加规范和自动化。在本文中,我们将深入探讨Maven的核心概念、功能以及...

    Maven使用tomcat8-maven-plugin插件.docx

    Maven 使用 tomcat8-maven-plugin 插件 Maven 是一个流行的构建自动化工具,它可以帮助开发者自动完成项目的编译、测试、打包、部署等任务。 Tomcat 是一个流行的 Web 服务器,Maven 提供了一个插件 tomcat8-maven-...

    maven-android-plugin-samples, Android Maven 插件不推荐使用的示例 !.zip

    maven-android-plugin-samples, Android Maven 插件不推荐使用的示例 ! Android Maven 插件--示例项目警告这里项目的为 。 在版本 4.0.0 -rc.1的Android Maven 插件的所有示例项目都是实际插件代码库的一部分,并...

    maven项目:neo4j实例

    它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。...

    Failed to execute goal org.apache.maven.plugins:maven-compiler

    在&lt;plugins&gt;&lt;/plugins&gt;中添加 &lt;groupId&gt;org.apache.maven.plugins &lt;artifactId&gt;maven-compiler-plugin &lt;version&gt;3.8.1 &lt;source&gt;1.8 &lt;target&gt;1.8 &lt;/plugin&gt;

    在 IntelliJ IDEA 中集成 Maven 环境,可以按照以下步骤进行操作: 安装 Maven

    你可以从 Maven 官方网站(https://maven.apache.org)下载最新版本的 Maven,并按照官方文档进行安装。 配置 Maven 路径:在 IntelliJ IDEA 中打开设置(Settings)窗口,选择 “Build, Execution, Deployment” -...

    tomcat8-maven-plugin-3.0-r1655215.jar

    解决tomcat8-maven-plugin-3.0-r1655215.jar阿里云同有的问题。放到路径org\apache\tomcat\maven\tomcat8-maven-plugin\3.0-r1655215\就可以了

    Maven: The Complete Reference权威指南

    Maven: The Complete Reference The essential reference for anyone working with Apache Maven. Explore the details of the POM, Maven Settings, Maven Archetypes.

    maven3.6maven3.6maven3.6

    Maven是Java世界中的一款强大的项目管理和构建工具,它极大地简化了软件项目的构建、依赖管理和文档生成过程。...无论是新手还是经验丰富的开发者,都可以从Maven 3.6中受益,享受更加流畅的开发体验。

    mavenrepo:EntireJ Maven存储库

    9. 插件管理:除了依赖,Maven还允许开发者通过&lt;build&gt;&lt;plugins&gt;标签来声明和配置构建过程中的插件,如编译、测试、打包等,这些插件也可以从Maven仓库中获取。 10. Maven生命周期与构建阶段:Maven拥有预定义的...

Global site tag (gtag.js) - Google Analytics