新建maven工程时
1故障:-Dmaven.multiModuleProjectDirectory system property
is not set. Check $M2_HOME environment variable and mvn
script match.
去java中jdk版本设置的位置"编辑",Default Vm...后面
拷贝粘贴:注意M2_HOME是maven环境变量的名称我的是M2_HOME
-Dmaven.multiModuleProjectDirectory=$M2_HOME
2出现白本错误多数因为eclipse的启动内存问题
Maven创建 An internal error occurred during
eclipse.ini或者myeclipse.ini修改文件中的以下配置:
-Xms512m
-Xmx1024m
解释:第一个是最小的初始化内存,第二个是最大的占有内存
在测试类中如果@Test不能导入jar包
需要在pom.xml中更改junit的版本为4.9
3.在pom文件中dependency Hie...中可以看到jar包之间的依赖
4.Maven 中央仓库地址如下,另外一般都是进入页面后找到自己需要的jar包然后会自动出现GAV的书写直接 粘到pom文件即可,部分公司使用私人库下载:
①. http://www.sonatype.org/nexus/
②. http://mvnrepository.com/ (推荐仓库)
③ http://repo1.maven.org/maven2
5依赖传递:jar包里面可能还要依赖别的jar包,例子:使用spring-test的jar包时,此jar包里还要一个spring-core包,而 这个包还需要依赖commons-logging包,此时即此工程和commons-logging包是依赖传递,
最短路径:maven会自动寻找jar包中最短的路径使用
6引用别的模块的包时,需要把g.a.v粘贴到主动引用的A工程中,前提是被引用工程B需要mvn install了,这样库中才有这个jar包
7依赖排除:当B工程依赖A工程一部分jar包,则在B的pom中写<exclusion>中间是不需要的A中的jar包GAV</exclusion>
8聚合:成批量的管理子模块,避免每个工程都install一下.
<version>0.0.1-SHAPSHOT</version>
<package>pom</package>
<!--子模块包名-->
<modules>
<module>../子模块名称</module>
<modules>
继承:主要是指继承父工程中的jar包,可以简便的管理jar包的版本,抽出了常用的配置
<!-- 1在父工程设置被依赖的jar包的统一版本 -->
<properties>
<spring-mvc.version>4.2.5.RELEASE</spring-mvc.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring-mvc.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!--2子工程的配置(注意查看是否有不需要或者是版本冲突的jar包需要使用<exclusion>标签管理)-->
<parent>
<artifactId>partner</artifactId>
<groupId>父工程名称</groupId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../父工程名称</relativePath>
</parent>
<!-- 使用父工程中的jar包 -->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
</dependencies>
9如果是普通的web工程创建的时候不能再选择quckstar,而是选择webapp
10 scope意思是范围,
例: 1<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
说明是junit只在test时参与
例2 <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.2.5.RELEASE</version>
<scope>compile</scope>
</dependency>
spring-test在compile即全程参与
另注依赖范围:
compile:默认是compile,对 编译+测试+运行 都有效
provided:对编译和测试,运行的时候不需要加入
runtime:只在测试和运行时 有效,比较典型的例子 jdbc api,只有在启动代码测试或者运行的时候才会启用
test:只会在测试时有效,比较典型例子 就是junit ,只有再测试的时候 才会启用
11另外注意在web工程中,添加jsp的servlet-api依赖时,需要参考web服务器的容器中是否有自带的servlet-api的jar包,此处可能造成冲突