前言

最近在研究java框架struts2的相关漏洞,然后就去看了官方给出的文档。在看文档的过程中发现使用到了Apache Maven这个项目管理工具,我在网上搜索了一下,大多数文章都写得不是很系统,容易产生迷惑。我就自己来根据自己的学习过程,做个记录。一来为了方便自己复习,二来别人如果有类似需求也可以来看看。写的不好的地方,还请多多提出。

0x00 安装以及简单配置

  首先我们从官方进行下载,下载链接如下:

http://maven.apache.org/download.cgi

这里我下载的是二进制的包,解压以后我们来到bin目录下,可以看到如下的目录结构:

然后我们复制路径,设置环境变量。然后通过版本号的打印来判断是否安装成功,如果输出类似如下信息,说明安装成功(linux下的安装也是这个步骤,下载,解压缩,然后设置环境变量):

C:\Users\>mvn -v
Apache Maven 3.5. (138edd61fd100ec658bfa2d307c43b76940a5d7d; --18T15::+:)
Maven home: D:\maven\apache-maven-3.5.\bin\..
Java version: 1.8.0_152, vendor: Oracle Corporation
Java home: D:\program\java\jdk1..0_152\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

0x01 从helloworld开始构建我们的项目

  我们在命令行中输入如下,开始构建我们自己的项目:

mvn archetype:generate -DgroupId=com.test.helloworld -DartifactId=helloworld -Dpackage=com.test.helloworld -Dversion=1.0-SNAPSHOT

这里涉及到几个关键的字段,我们随后会讲到。然后archetype:generate会为我们列出一系列的archetype,也就是项目模型。我这里默认为#1107, 也就是maven-archetype-quickstart。然后选择版本,我们默认选择6,(1.1的版本):

然后让我们再次确定之前的信息:

回车或者输入Y回车之后。提示项目部署完成,在家目录helloworld目录下, 目录结构如下:

其中,测试代码放在src/test目录下,源代码和资源文件放在src/main下。我们可以观察到生成了App.java的一个文件,内容如下:

package com.test.helloworld;

/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}

0x02 项目打包

我们切换到helloworld目录下 ,就可以对我们创建好的helloworld项目进行打包操作了。打包的结果根据pom.xml文件中的配置选项来决定,这里默认将会生成jar的二进制包。

我们执行命令, mvn package

如果没有error比较顺利,我们的项目构建成功,输出如下:

[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ helloworld ---
[INFO] Building jar: C:\Users\\helloworld\target\helloworld-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.798 s
[INFO] Finished at: --03T20::+:
[INFO] Final Memory: 19M/146M
[INFO] ------------------------------------------------------------------------

提示信息中说明了我们 生成的jar包的位置,此时我们还发现生成 了一个target的目录。编译后的 class 文件放在 target/classes/ 目录下面,测试 class 文件放在 target/test-classes/ 目录下面。

0x03 测试项目

java -cp target/helloworld-1.0-SNAPSHOT.jar com.test.helloworld.App

说明我们的项目成功了。

本节我们简单学习了如何用Maven项目管理工具,对项目进行创建,打包。随后我们将会学到项目的详细配置,依赖的安装,项目的分发等。

Apache Maven的入门使用之项目的基本构建(1)的更多相关文章

  1. Apache Maven的入门使用之常用操作以及核心概念介绍(2)

    我们接着上篇文章,来继续介绍Maven中几个核心的概念: POM (Project Object Model) Maven 插件 Maven 生命周期 Maven 依赖管理 Maven 库 POM ( ...

  2. Apache Maven从入门到升天

    喜欢就点个赞呗! GitHub项目JavaHouse同步收录 1 引入 在日常 Java 开发中,Maven 应该是必不可少的一个工具了,当然也有人使用 Gradle 的.那么 Maven 究竟是个啥 ...

  3. 【Maven基础入门】02 了解POM文件构建

    温故 上一节我们说过:Maven 是一个基于POM文件的构建工具,当然离不开POM文件 POM文件是一个XML标记语言表示的文件,文件就是:pom.xml 一个POM文件包含了项目的基本信息,用于描述 ...

  4. Eclipse中使用Maven创建Servlet3.0 Web 项目

    摘要 Apache Maven是一个优秀的项目构建和管理工具,许多开源项目都使用Maven进行构建.由于最近工作中要用到Maven,于是这里记录下在Eclipse中使用Maven插件创建一个基于Ser ...

  5. [Maven]Apache Maven 入门篇

    作者:George Ma 上 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法.这个入门篇分上下两篇.本文着重动手,用 ma ...

  6. Apache Maven 入门篇 ( 上 )

    作者:George Ma 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法. 这个入门篇分上下两篇.本文着重动手,用 mav ...

  7. [转]Apache Maven 入门篇 ( 上 )

    原文地址:Apache Maven 入门篇 ( 上 ) 作者:George Ma 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这 ...

  8. [转]Apache Maven 入门篇(下)

    原文地址: Apache Maven 入门篇(下) 作者:George Ma 第一篇文章大概的介绍了一下Apache Maven以及它的下载和安装,并且运行了一个简单的示例.那么在对maven有了一点 ...

  9. maven3实战之maven使用入门(使用archetype生成项目骨架)

    maven3实战之maven使用入门(使用archetype生成项目骨架) ---------- maven提供了archetype以帮助我们快速勾勒出项目骨架.以Hello World为例,我们使用 ...

随机推荐

  1. Centos 7 安装和配置Redis

    一. 安装 操作系统:Centos 7. 最小化安装 redis版本: 4.0.6 服务器地址:*** 第一步:下载redis安装包(如果有新的,下载最新的redis安装包) wget http:// ...

  2. idea如何设置注释作者信息

    什么情况下使用? 在建一个新的类的时候   有注释信息  如下图所示 实现步骤 1  打开idea后   点击File后 选择Settings..如下图 2 打开后打开 file and code t ...

  3. zTree的简单使用

    理论可以看:http://www.cnblogs.com/shinhwazt/p/5828031.html zTree包:链接:http://pan.baidu.com/s/1eR4xP6M 密码:w ...

  4. UVa 12186 Another Crisis (DP)

    题意:有一个老板和n个员工,除了老板每个员工都有唯一的上司,老板编号为0,员工们为1-n,工人(没有下属的员工),要交一份请愿书, 但是不能跨级,当一个不是工人的员工接受到直系下属不少于T%的签字时, ...

  5. (匹配 Hopcroft-Karp算法)Rain on your Parade -- Hdu --2389

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=2389 不能用匈牙利,会TEL的,用Hopcroft-Karp Hopcroft-Karp课件 以前是寻找 ...

  6. Android-解析JSON数据(JSON对象/JSON数组)

    在上一篇博客中,Android-封装JSON数据(JSON对象/JSON数组),讲解到Android真实开发中更多的是去解析JSON数据(JSON对象/JSON数组) 封装JSON的数据是在服务器端进 ...

  7. Android-封装JSON数据(JSON对象/JSON数组)

    Android-封装JSON数据(JSON对象/JSON数组),一般情况下不会在Android端封装JSON的数据,因为封装JSON的数据是在服务器端进行封装了,Android更多的工作是解析(JSO ...

  8. [CentOS]Centos设置网卡

    IP设定查看Command # ifconfig -a # netstat -nr 给eth0设定值 # vi /etc/sysconfig/network-scripts/ifcfg-eth0 DE ...

  9. 看懂gc日志

    使用的是:+PrintGCDetails -XX:+PrintGCTimeStamps 输出的日志格式: [Times: user=0.03 sys=0.00, real=0.01 secs] 363 ...

  10. 在Excel中导入文本文件(CSV/TXT),自定义隔离符号

    经常需要在Excel中导入文本文件,但是需要自定义隔离符号,例如空格或者逗号,参考一下方法: