通过命令构建Java项目,打包,及运行
mvn archetype:generate -DgroupId=org.sonatypea.mavenbook.ch03 -DartifactId=NumberGenerator -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
在安装好maven的基础上,我们再windows系统命令模式下,执行以上语句。即可基于maven构建一个简单的java项目。
mvn install
在pom.xml所在的目录下执行此行命令,构建及打包这个应用,执行成功后,会在目录下生产一个target文件夹
运行程序
java -cp target/NumberGenerator-1.0-SNAPSHOT.jar org.sonatypea.mavenbook.ch03.App
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>org.sonatypea.mavenbook.ch03</groupId>
<artifactId>NumberGenerator</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>NumberGenerator</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>
groupId, artifactId, version, scope构成了maven的坐标。
mvn help:effective-pom
用来查看当前工程的完整的pom文件, 比如从父类pom以及默认pom继承的内容
Maven生命周期
Maven有三套相互独立的生命周期,分别为clean、default和site。clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site生命周期的目的是建立项目站点。
clean生命周期的目的是清理项目,它包括如下三个阶段:
a)pre-clean:执行一些清理前需要完成的工作。
b)clean:清理上一次构建的文件。
c)post-clean:执行一些清理后需要完成的工作。
default生命周期定义了真正构建时所需要执行的所有步骤,它是所有生命周期中最核心的部分。
a)validate
b)initialize
c)generate-sources
d)process-sources
e)generate-resources
f) process-resources
g)compile:编译项目的主源码,即编译src/main/java目录下的Java文件至项目输出的主classpath中。
h)process-classes
i)generate-test-sources
j)process-test-sources
k)generate-test-resources
l)process-test-resources
m)test-compile:编译项目的测试代码,即编译src/test/java目录下的Java文件至项目输出的测试classpath目录中。
n)process-test-classes
o)test:使用单元测试框架运行测试。
p)prepare-package
q)package:接受编译好的代码,打包成可发布的格式。如:.jar
r)pre-integration-test
s)integration-test
t)post-integration-test
u)verify
v)install:将包安装到Maven本地仓库,供本地其他Maven项目使用。
w)deploy:将最终的包复制到远程仓库,供其他开发人员和Maven项目使用。
site生命周期的目的是建立和发布项目站点。
a)pre-site:执行一些在生成项目站点之前需要完成的工作。
b)site:生成项目站点文档。
c)post-site:执行一些在生成项目站点之后需要完成的工作。
d)site-deploy:将生成的项目站点发布到服务器上。
查看项目依赖树
mvn dependency:tree