首先我们要知道在compile(编译)时,我们在main中写的文件,
maven只会把src/main/resources中文件会放到target/classes
(这里面是编译好的class文件)中去;
如果有时我们需要使用src/main/java的一些非java文件,比如
.properties或者.xml时,就需要在pom,xml中进行配置,只需如下代码即可–>
<build><resources> <resource><directory>src/main/java</directory><includes> <include>**/*.properties</include> <include>**/*.xml</include></includes><filtering>false</filtering> </resource></resources> </build>
maven为我们大大方便了导入jar包的工作;比如我们要导入servlet,jsp相关的jar包,我们只需要如下即可
<dependencies><dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope></dependency><!-- 加入servlet依赖--><dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope></dependency><!-- 加入jsp的依赖(jar)--><dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope></dependency> </dependencies>
有关的<scope>标签的说明:
<scope>有三种取值,分别是provided,test,compile
这三种不同取值,代表我们引入的jar包,在maven周期中哪一步起作用;
比如
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope></dependency>
引入junit包,那么这个jar包就只会在maven周期中测试项目环节起作用;
compile会在编译,测试,打包,部署等环节中都起作用;
provided :表示此jar包由服务器提供,项目本身不需要带;只在编译和测试中起作用
当我们引入了多个jar包并且版本号相同时,如果把版本号写错,那么整个项目就会出错;
因此maven支持我们在pom.xml中自定义全局变量;
通过${全局变量名} 来引用变量的值
这些是maven默认的属性,
<!-- maven的属性设置--> <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target> </properties>
我们可以在此基础上自定义属性,比
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><spring.version>4.3.10.RELEASE</spring.version> </properties>
然后下面如果引入的jar包时,就可以用${spring.version}来替换
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency>