您的位置:首页 > 编程语言 > Java开发

使用mvn命令构建java项目

2015-11-20 10:17 495 查看
  maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的过程。欢迎大家加入技术交流群:249805133 ,让我们一起愉快的玩儿技术~~

一、构建Jave项目

1.1、创建Jave Project

  1、使用mvnarchetype:generate命令,如下所示:

mvn archetype:generate -DgroupId=upsmart.sparta.wechat -DartifactId=wechat -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false


2、使用mvnarchetype:create命令,如下所示:

mvn archetype:create -DgroupId=upsmart.sparta.wechat -DartifactId=wechat -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false


  使用"mvnarchetype:generate"命令和"mvnarchetype:create"都可以创建项目,目前没有发现这两者的区别,唯一区别的地方就是发现使用"mvnarchetype:generate"命令创建项目时要特别长的时间才能够将项目创建好,而使用"mvnarchetype:create"命令则可以很快将项目创建出来。

  使用"mvnarchetype:create"命令创建一个java项目的过程如下图所示:



如上图若构建时出现Failed to execute goalorg.apache.maven.plugins:maven-archetype-plugin:2.4:create(default-cli) on project standalone-pom: Unable to parseconfiguration of mojoorg.apache.maven.plugins:maven-archetype-plugin:2.4:create forparameter #: Abstract class or
interface'org.apache.maven.artifact.repository.ArtifactRepository' cannot beinstantiated -> [Help 1]

的错误则可将上面命令中的create换成generate即可解决(部分构建时会出现上面的异常),如下




1.2、JavaProject的pom.xml文件说明

  通过Maven构建的JavaProject,在项目的根目录下都会存在一个pom.xml文件,进入sparta-wechat目录,可以看到有一个pom.xml文件,这个文件是Maven的核心。如下图所示:

  




    1、pom意思就是project objectmodel。

    2、pom.xml包含了项目构建的信息,包括项目的信息、项目的依赖等。

    3、pom.xml文件是可以继承的,大型项目中,子模块的pom.xml一般都会继承于父模块的pom.xml

  pom.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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>upsmart.sparta.wechat</groupId>

<artifactId>sparta-wechat</artifactId>

<packaging>jar</packaging>

<version>1.0-SNAPSHOT</version>

<name>sparta-wechat</name>

<url>http://maven.apache.org</url>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>3.8.1</version>

<scope>test</scope>

</dependency>

</dependencies>

</project>

  pom.xml文件的节点元素说明:

   

<project>       pom文件的顶级节点

    <modelVersion>     object model版本,对Maven2和Maven3来说,只能是4.0.0

    <groupId>       项目创建组织的标识符,一般是域名的倒写

    <artifactId>      定义了项目在所属组织的标识符下的唯一标识,一个组织下可以有多个项目

    <version>       当前项目的版本,SNAPSHOT,表示是快照版本,在开发中

    <packaging>     打包的方式,有jar、war、ear等

    <name>        项目的名称

    <url>         项目的地址

    <properties>    属性配置,比如:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <dependencies>   构建项目依赖的jar

  其中由groupId、artifactId和version唯一的确定了一个项目坐标

1.3、使用Maven编译-测试-打包-安装项目

1.3.1、编译

  编译源程序,进入命令行,切换到sparta-wechat目录,执行命令:mvn cleancompile,如下图所示:



  编译成功,在sparta-wechat目录下多出一个target目录,target/classes里面存放的就是编译后的class文件,如下图所示:

  


1.3.2、测试

  进入命令行,切换到sparta-wechat目录,执行命令:mvn cleantest,如下图所示:

  


  测试成功,在sparta-wechat/target目录下会有一个test-classes目录,存放的就是测试代码的class文件,如下图所示:

  


1.3.3、打包

  进入命令行,切换到myapp目录,执行命令:mvn cleanpackage,执行打包命令前,会先执行编译和测试命令,如下图所示



  构建成功后,会在target目录下生成sparta-wechat-1.0-SNAPSHOT.jar包,如下图所示:

  


1.3.4、安装

  进入命令行,切换到sparta-wechat目录,执行命令:mvnclean install ,执行安装命令前,会先执行编译、测试、打包命令,如下图所示:



  构建成功,就会将项目的jar包安装到本地仓库。

1.3.5、运行jar包

  进入命令行,切换到sparta-wechat目录,执行命令:java -cptarget/sparta-wechat-1.0-SNAPSHOT.jarupsmart.sparta.wechat.App,如下图所示:

  


二、构建JavaWeb项目

2.1、创建JavaWeb项目

  1、使用mvnarchetype:generate命令,如下所示:

mvn archetype:generate -DgroupId=upsmart.sparta.web -DartifactId=my-webApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false


  使用"mvnarchetype:generate"命令创建一个javaWeb项目的过程如下图所示:  

  


  使用"mvnarchetype:generate"命令创建一个javaWeb项目的时间比较长,这里花了2分钟多,有时甚至会更久,有兴趣的可以研究一下花这么长时间的原因。

  2、使用mvnarchetype:create命令,如下所示:

mvn archetype:create -DgroupId=upsmart.sparta.app -DartifactId=myWebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false


  使用"mvnarchetype:create"命令创建一个javaWeb项目的时间非常快,几秒钟就可以了。这里就不在演示了。

2.2、使用Maven打包发布Web项目

  Maven帮我们创建的JavaWeb项目是一个空的项目,只有一个index.jsp页面,我们使用Maven将Web项目打包发布运行。

  在命令行切换到my-webApp目录,执行:mvnpackage,构建成功后,my-webApp目录目录下多了一个target目录,在这个目录下会打包成my-webApp目录.war,把这个war包拷贝到Tomcat的发布目录下就可以运行了。如下图所示:

  


  打包成功,在my-webApp/target目录下生成了一个my-webApp.war文件,如下图所示:

  


  将my-webApp.war放到tomcat服务器中运行即可。

  运行效果如下:



除了使用Tomcat服务器运行Web项目之外,我们还可以在Web项目中集成Jetty发布运行,首先在pom.xml文件中配置Jetty插件,如下:

<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>upsmart.sparta.web</groupId>

<artifactId>my-webApp</artifactId>

<packaging>war</packaging>

<version>1.0-SNAPSHOT</version>

<name>my-webApp Maven Webapp</name>

<url>http://maven.apache.org</url>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>3.8.1</version>

<scope>test</scope>

</dependency>

</dependencies>

<build>

<finalName>my-webApp</finalName>

<pluginManagement>

<!--配置Jetty-->

<plugins>

<plugin>

<groupId>org.mortbay.jetty</groupId>

<artifactId>maven-jetty-plugin</artifactId>

</plugin>

</plugins>

</pluginManagement>

</build>

</project>

  打开命令行窗口,切换到myWebApp目录,然后执行:mvnjetty:run启动Jetty服务器,如下图所示:



三、Maven创建项目的命令说明

  mvn archetype:create或者mvnarchetype:generate  固定写法

  -DgroupId                       组织标识(包名)

  -DartifactId                      项目名称

  -DarchetypeArtifactId                 指定ArchetypeId,maven-archetype-quickstart,创建一个JavaProject;maven-archetype-webapp,创建一个WebProject

  -DinteractiveMode                    是否使用交互模式

archetype是mvn内置的一个插件,create任务可以创建一个java项目骨架,DgroupId是软件包的名称,DartifactId是项目名,DarchetypeArtifactId是可用的mvn项目骨架,目前可以使用的骨架有:

maven-archetype-archetype
maven-archetype-j2ee-simple
maven-archetype-mojo
maven-archetype-portlet
maven-archetype-profiles (currently under development)
maven-archetype-quickstart
maven-archetype-simple (currently under development)
maven-archetype-site
maven-archetype-site-simple
maven-archetype-webapp

  每一个框架都会建相应的目录结构和一些通用文件,最常用的是maven-archetype-quickstartmaven-archetype-webapp。maven-archetype-quickstart是用来创建一个JavaProject,而maven-archetype-webapp则是用来创建一个JavaWebProject。

  不得不说,Maven的确是一个很好的项目构建工具。掌握好Maven对于项目开发是非常有帮助的。

注:有兴趣的同学也可以加入群:249805133 ,大家一起愉快的玩技术~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: