使用Maven构建Java项目(图文)

原文:https://www.cnblogs.com/xdp-gacl/p/4240930.html

maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的过程。

一、构建Jave项目

1.1、创建Jave Project

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

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

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

  使用"mvn archetype:generate"命令和"mvn archetype:create"都可以创建项目,目前没有发现这两者的区别。

archetype:create 这个命令在maven 3.02以上的版本已经不用了, 用 generate 命令代替
请参考官方文档
archetype:create
Full name:

org.apache.maven.plugins:maven-archetype-plugin:2.4:create

This plugin goal has been deprecated:
Please use the generate mojo instead

使用"mvn archetype:generate"命令创建项目时要特别长的时间才能够将项目创建好

原因是创建项目过程中会下载这个文件,而访问网络上这个文件非常耗时http://repo1.maven.org/maven2/archetype-catalog.xml

问题解决办法
1.直接下载archetype-catalog.xml文件,放到本地的apache-maven目录中。
2.在使用mvn archetype:generate命令时,加上-DarchetypeCatalog=local,以替换网络上的catalog.xml。

具体参考:http://9leg.com/maven/2015/02/01/why-is-mvn-archetype-generate-so-low.html

  使用"mvn archetype:generate"命令创建一个java项目

BUILD SUCCESS就表示项目构建成功,当在前用户目录下(即C:\Documents and Settings\Administrator)下构建了一个Java Project叫做myapp。

  构建好的Java项目的目录结构如下:

构建好的Java项目的目录结构

可以看到,Maven帮我们创建的项目是一个标准的Maven项目,不过目前Maven只是帮我们生成了 src/main/java (存放项目的源代码)和 src/test/java (存放测试源代码)这两个目录,但实际项目开发中我们一般都会有配置文件,例如log4j.properties,所以我们还需要手动创建 src/main/resources (存放项目开发中用到的配置文件,如存放log4j.properties等)和 src/test/resources (存放测试时用到的配置文件),如下图所示:

手动创建

然后我们就可以将创建好的myapp项目导入到Eclipse中进行开发了,如下图所示:

创建好的myapp项目

1.2、JavaProject的pom.xml文件说明

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

一个pom.xml文件

1、pom意思就是project object model。

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

  <groupId>com.mycompany.app</groupId>
  <artifactId>myapp</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

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

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <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、编译

  编译源程序,进入命令行,切换到myapp目录,执行命令:mvn clean compile,如下图所示:

编译源程序

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

编译后的class文件

1.3.2、测试

  进入命令行,切换到myapp目录,执行命令:mvn clean test

  在myapp\target目录下会有一个test-classes目录,存放的就是测试代码的class文件

1.3.3、打包

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

先执行编译和测试命令

构建成功后,会在target目录下生成myapp-1.0-SNAPSHOT.jar包

1.3.4、安装

  进入命令行,切换到my-app目录,执行命令:mvn clean install ,执行安装命令前,会先执行编译、测试、打包命令,

构建

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

1.3.5、运行jar包

  进入命令行,切换到myapp目录,执行命令:java -cp target\myapp-1.0-SNAPSHOT.jar com.mycompany.app.App

posted @ 2021-04-03 22:47  你是真的菜啊  阅读(533)  评论(0编辑  收藏  举报