maven简单应用解析

新建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包,此处可能造成冲突

猜你喜欢

转载自654768009.iteye.com/blog/2338195