• maven的聚合和继承,maven的依赖


    1.maven如果没有看过系统的视频其实是不好理解的,但是当你看了maven的完整使用以后你就会觉得maven很好用

    *一个完整的maven工程应该有多个工程组成

    *创建一个父类工程,此工程为所有工程的父类工程,只解决jar包的版本控制,这个工程没有任何代码。

    也就是只需要对maven的pom文件进行修改,且package类型为pom

    父类工程的示例pom文件

    <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.taotao</groupId>
    <artifactId>taotao-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <!-- 集中定义依赖版本号 -->
    <properties>
    <junit.version>4.12</junit.version>
    <spring.version>4.1.3.RELEASE</spring.version>
    <mybatis.version>3.2.8</mybatis.version>
    <mybatis.spring.version>1.2.2</mybatis.spring.version>
    <mybatis.paginator.version>1.2.15</mybatis.paginator.version>
    <mysql.version>5.1.32</mysql.version>
    <slf4j.version>1.6.4</slf4j.version>
    <jackson.version>2.4.2</jackson.version>
    <druid.version>1.0.9</druid.version>
    <httpclient.version>4.3.5</httpclient.version>
    <jstl.version>1.2</jstl.version>
    <servlet-api.version>2.5</servlet-api.version>
    <jsp-api.version>2.0</jsp-api.version>
    <joda-time.version>2.5</joda-time.version>
    <commons-lang3.version>3.3.2</commons-lang3.version>
    <commons-io.version>1.3.2</commons-io.version>
    <commons-net.version>3.3</commons-net.version>
    <pagehelper.version>3.4.2</pagehelper.version>
    <jsqlparser.version>0.9.1</jsqlparser.version>
    <commons-fileupload.version>1.3.1</commons-fileupload.version>
    <jedis.version>2.7.2</jedis.version>
    <solrj.version>4.10.3</solrj.version>
    </properties>
    <dependencyManagement>
    <dependencies>
    <!-- 时间操作组件 -->
    <dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>${joda-time.version}</version>
    </dependency>
    <!-- Apache工具组件 -->
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>${commons-lang3.version}</version>
    </dependency>
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-io</artifactId>
    <version>${commons-io.version}</version>
    </dependency>
    <dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    <version>${commons-net.version}</version>
    </dependency>
    <!-- Jackson Json处理工具包 -->
    <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>
    </dependency>
    <!-- httpclient -->
    <dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>${httpclient.version}</version>
    </dependency>
    <!-- 单元测试 -->
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>${junit.version}</version>
    <scope>test</scope>
    </dependency>
    <!-- 日志处理 -->
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>${slf4j.version}</version>
    </dependency>
    <!-- Mybatis -->
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>${mybatis.version}</version>
    </dependency>
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>${mybatis.spring.version}</version>
    </dependency>
    <dependency>
    <groupId>com.github.miemiedev</groupId>
    <artifactId>mybatis-paginator</artifactId>
    <version>${mybatis.paginator.version}</version>
    </dependency>
    <dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>${pagehelper.version}</version>
    </dependency>
    <!-- MySql -->
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>${mysql.version}</version>
    </dependency>
    <!-- 连接池 -->
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>${druid.version}</version>
    </dependency>
    <!-- Spring -->
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>${spring.version}</version>
    </dependency>
    <!-- JSP相关 -->
    <dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>${jstl.version}</version>
    </dependency>
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>${servlet-api.version}</version>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <version>${jsp-api.version}</version>
    <scope>provided</scope>
    </dependency>
    <!-- 文件上传组件 -->
    <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>${commons-fileupload.version}</version>
    </dependency>
    <!-- Redis客户端 -->
    <dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>${jedis.version}</version>
    </dependency>
    <!-- solr客户端 -->
    <dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
    <version>${solrj.version}</version>
    </dependency>
    </dependencies>
    </dependencyManagement>

    <build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
    <!-- 资源文件拷贝插件 -->
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.7</version>
    <configuration>
    <encoding>UTF-8</encoding>
    </configuration>
    </plugin>
    <!-- java编译插件 -->
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
    <source>1.7</source>
    <target>1.7</target>
    <encoding>UTF-8</encoding>
    </configuration>
    </plugin>
    </plugins>
    <pluginManagement>
    <plugins>
    <!-- 配置Tomcat插件 -->
    <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    </plugin>
    </plugins>
    </pluginManagement>
    </build>
    </project>

    *然后我们需要创建一个工具类的工程,这个工程向项目中提供需要的工具类,当然这个工程是父类工程的子类工程,这个工程会被当成工具使用,所以他

    的package应该是jar

    父类工程的示例pom文件

    <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>
    <parent>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-common</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <!-- jar包的依赖 -->
    <dependencies>
    <!-- 时间操作组件 -->
    <dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    </dependency>
    <!-- Apache工具组件 -->
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    </dependency>
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-io</artifactId>
    </dependency>
    <dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    </dependency>
    <!-- Jackson Json处理工具包 -->
    <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    </dependency>
    <!-- httpclient -->
    <dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    </dependency>
    <!-- 单元测试 -->
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <scope>test</scope>
    </dependency>
    <!-- 日志处理 -->
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    </dependency>
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <scope>provided</scope>
    </dependency>
    </dependencies>
    </project>

    这个工程需要下载所需要的jar包,后面所有工程都需要下载jar包,父类没有下载,只是定义了版本号,所以这儿的工程依赖都只有groupId和

    artifactId,不需要定义版本

    *创建一个工程的管理工程,这个工程只是一个管理工程,没有实际的代码,由于工程中需要使用到工具工程,所以必须依赖工具工程,当然他必须继承

    父类工程

    管理工程的示例pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <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>
    <parent>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-manager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <dependencies>
    <dependency>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-common</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    </dependency>


    </dependencies>


    <modules>
    <module>taotao-manager-pojo</module>
    <module>taotao-manager-mapper</module>
    <module>taotao-manager-service</module>
    <module>taotao-manager-web</module>
    </modules>


    <build>
    <!-- 配置插件 -->
    <plugins>
    <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <configuration>
    <port>8080</port>
    <path>/</path>
    <url>http://192.168.25.135:8080/manager/text</url>
    <username>tomcat</username>
    <password>tomcat</password>
    </configuration>
    </plugin>
    </plugins>
    </build>
    </project>

    由于最后是通过tomcat运行此工程,所以在此工程的pom中添加tomcat插件,而modules就是我们在下面需要建立的模块,是这些模块共同构成了这个管理工程

    *建立pojo模块,此模块只是实体类,所以没有任何依赖

    pojo模块的示例pom

    <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>
    <parent>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-manager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>taotao-manager-pojo</artifactId>
    </project>

    由于是管理工程的模块,由于管理工程继承了父类工程,所以他也继承了父类工程,此模块只书写实体类的代码

    *建立mapper模块,此模块是mapper借口和mybatis的xml文件,所以他依赖实体类和mybatis的相关jar包

    mapper模块的示例pom

    <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>
    <parent>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-manager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>taotao-manager-mapper</artifactId>
    <!-- 依赖管理 -->
    <dependencies>
    <!-- 依赖taotao-manager-pojo -->
    <dependency>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-manager-pojo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <!-- Mybatis -->
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    </dependency>
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    </dependency>
    <dependency>
    <groupId>com.github.miemiedev</groupId>
    <artifactId>mybatis-paginator</artifactId>
    </dependency>
    <dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    </dependency>
    <!-- MySql -->
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!-- 连接池 -->
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    </dependency>
    </dependencies>
    <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
    <build>
    <resources>
    <resource>
    <directory>src/main/java</directory>
    <includes>
    <include>**/*.properties</include>
    <include>**/*.xml</include>
    </includes>
    <filtering>false</filtering>
    </resource>
    </resources>
    </build>
    </project>

    依赖pojo模块和使用mybatis需要的jar包

    *建立service模块,此模块是业务逻辑层模块,主要处理逻辑方面,需要调用mapper,所以对mapper依赖,用到spring注入,所以需要spring的一些jar包

    service模块的示例pom

    <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>
    <parent>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-manager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>taotao-manager-service</artifactId>
    <!-- 依赖管理 -->
    <dependencies>
    <dependency>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-manager-mapper</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <!-- Spring -->
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    </dependency>
    </dependencies>
    </project>

    依赖spring的注入和mapper借口,所以需要这两种依赖

    *建立web模块,也就是controller层模块,需要特别注意此模块的package为war,需要依赖service和spring mvc等,所以是需要的依赖较多的模块

    web模块的示例pom

    <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>
    <parent>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-manager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>taotao-manager-web</artifactId>
    <packaging>war</packaging>
    <!-- 依赖管理 -->
    <dependencies>
    <dependency>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-manager-service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <!-- JSP相关 -->
    <dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    </dependency>
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <scope>provided</scope>
    </dependency>
    <!-- 文件上传组件 -->
    <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    </dependency>
    </dependencies>
    </project>

    看了这个我有一些奇怪,为什么会没有spring的依赖呢,,,,,,仔细看,以为他依赖了service,由于service有spring的依赖,所以他自然也有了spring的依赖

    *****工程就创建好了,我们运行的时候是运行管理聚合的那个工程,这个工程需要到父类工程和工具工程,所以在运行管理工程之前我们要将父类工程和工具类

    工程加入到本地仓库,选中需要加入的工程,使用命令  mvn install ,加入本地仓库以后,我们在选中管理工程,通过 tomcat7:run,就可以启动此聚合工程。

    可以通过tomcat:run启动,但是这样是默认的tomcat6,我们安装的是tomcat7的插件

  • 相关阅读:
    以UIWebView的方式来播放网络多媒体档案
    Cocoa.Programming.for.Mac系统文章翻译
    iOS开发教程:Storyboard全解析第二部分
    boost日期、时间操作
    使用thrift大量编译警告消息方法
    一键自动往crontab添加条目脚本
    apache thrift的不足
    将Fedora 18 LXDE安装到U盘和进入图形界面的方法
    boost库thread.hpp编译警告(type attributes are honored only at type definition)已修复
    平板电视必知知识
  • 原文地址:https://www.cnblogs.com/1736gerr/p/6878260.html
Copyright © 2020-2023  润新知