Maven目录结构
Maven有一个标准的目录结构。如果你在项目中遵循Maven的目录结构,就无需在pom文件中指定源代码、测试代码等目录。
Maven的目录结构布局,参考Maven标准目录结构介绍
以下为最重要的目录:
- src
- main
- java
- resources
- webapp
- test
- java
- resources
- target
src目录是源代码和测试代码的根目录。main目录是应用的源代码目录。test目录是测试代码的目录。main和test下的java目录,分别表示应用的java源代码和测试代码。
resources目录包含项目的资源文件,比如应用的国际化配置的属性文件等。
如果是一个web项目,则webapp目录为web项目的根目录,其中包含如WEB-INF等子目录。
target目录是由Maven创建的,其中包含编译后的类文件、jar文件等。当执行maven的clean
目标后,target目录会被清空。
项目依赖
除非你的项目很小,否则会需要外部的Java API或者框架以jar包形式提供的依赖。当你编译项目代码的时候,需要classpath上的这些jar包。
使项目依赖的外部jar包以正确的版本保持最新状态,是一项艰巨的任务。而且,这些外部的jar包还会依赖其它的外部jar包。递归地下载所有这些外部依赖(jar包),并且要确保下载的版本都是正确的,是非常麻烦的。尤其是当项目变得越来越大,外部依赖越来越多的时候。
幸运的是,Maven内嵌有依赖管理的功能。你只需要在pom文件里指定依赖jar包的名称、版本号,Maven会自动下载并放到你的Maven本地仓库中。如果这些外部jar包依赖了其它的库,它们也会被下载到你的Maven本地仓库。
在pom文件的dependencies
属性中指定项目依赖,如:
<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.jenkov.crawler</groupId>
<artifactId>java-web-crawler</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version