2018-9-8-maven 的初识

一、maven的概念

一健构建

抽象构建过程

Maven 的主要作用: 项目构建 , 管理依赖

提供了本地仓库、中央仓库

二、父工程控制版本,子工程

 创建一个maven project(pom),然后在创建三个子模块(maven moudule),其中三个子模块,分别为 dao、service、web,也就是将三层的内容分别独立为一个项目,进一步将耦合性降低。

   为了消除重复,如果将dao、service、web分开创建独立的工程则每个工程的pom.xml文件中的内容存在重复,比如:设置编译版本、锁定spring的版本的等,可以将这些重复的配置提取出来在父工程的pom.xml中定义。

web层如何调用service层代码?service层又如何调用dao层的代码呢?

 web层调用service层的代码其实很简单,因为service是一个完整的项目,那么我们在web层这个项目中想要使用别得项目中的代码,只需要通过maven的pom.xml文件编写对应的坐标,将其jar包加入进来即可达到目的。也就是说把一个模块的 jar 包 引到另一个模块里面去。

三、项目构建(生命周期),自动化的哦

1、清理

2、编译

3、跑单元测试

4、测试报告

5、打包

6、打包到仓库中

7、部署

........

感觉步骤挺多的,但是其实只是 clean  install 一下就好了。

四、一般常由 properties 来决定版本号

<properties>
   <!-- 制定文件编码 -->
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
   <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
   <!-- 相关软件版本号 -->
   <commons-lang.version>2.6</commons-lang.version>
   <spring.version>4.3.4.RELEASE</spring.version>
   <csii.pe.version>10.0.1</csii.pe.version>
   <dubbo.version>2.8.4a</dubbo.version>
   <servlet.version>3.1.0</servlet.version>
   <solrj.version>6.3.0</solrj.version>
   <zookeeper.version>3.4.8</zookeeper.version>
   <jackson.version>2.8.5</jackson.version>
   <kryo.version>3.0.3</kryo.version>
   <slf4j.version>1.7.21</slf4j.version>
   <logback.version>1.1.7</logback.version>
   <tomcat-jdbc.version>8.5.4</tomcat-jdbc.version>
   <spring-ibatis.version>2.0.8</spring-ibatis.version>
   <ibatis-sqlmap.version>2.3.4.726</ibatis-sqlmap.version>
   <elasticsearch.version>2.3.4</elasticsearch.version>
   <fastjson.version>1.2.27</fastjson.version>
   <flowctrl.version>1.1.1</flowctrl.version>
   <disconf.version>2.6.36</disconf.version>
   <http.core.version>4.4.6</http.core.version>
   <mybatis.spring.version>1.3.1</mybatis.spring.version>
   <mybatis.version>3.4.5</mybatis.version>
       <mybatis-paginator.version>1.2.17</mybatis-paginator.version>
   <druid.version>1.1.6</druid.version>
   <mysql.version>5.1.40</mysql.version>
   <mybatis.generator.version>1.3.5</mybatis.generator.version>
   <lombok.version>1.16.2</lombok.version>
       <activiti.version>5.22.0</activiti.version>
       <hibernate.version>4.2.5.Final</hibernate.version>
       <guava.version>17.0</guava.version>
</properties>
<version>4.12</version>
<version>1.16.10</version>

五、其他模块的引用

<modules>
   <module>csii-loan-application-parent</module>
   <module>csii-loan-common-parent</module>
   <module>csii-loan-db-core</module>
</modules>

引用其他的模块,就联系到一起了。

六、GroupId和ArtifactId 坐标定位

   GroupId一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称

      ArtifactId设置为testProj,表示你这个项目的名称是testProj

<groupId>com.csii.pe</groupId>
<artifactId>pe-core</artifactId>

七、scope 作用域

<dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.12</version>
   <scope>test</scope>
</dependency>
<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <version>1.16.10</version>
   <scope>provided</scope>
</dependency>

compile (编译范围)

compile是默认的范围;编译范围依赖在所有的classpath 中可用,同时它们也会被打包。

provided (已提供范围)

provided 依赖只有在当JDK 或者一个容器已提供该依赖之后才使用。已提供范围的依赖在编译classpath (不是运行时)可用。它们不是传递性的,也不会被打包。

runtime (运行时范围)

runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。也不会被打包。

test (测试范围)

test范围依赖 在一般的编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。也不会被打包。

猜你喜欢

转载自blog.csdn.net/haodiaoer/article/details/82528078