• maven构建SSM项目


    对于小型项目来说,使用默认的maven配置项目即可,可是现在分布式项目越来越多,如果巧妙的使用maven部署项目这成了关键。

    maven的pom、jar、war:

    要正确部署得对maven的pom、war、jar文件要有了解。pom文件通常是一个聚合工程,含义就是管理下面的子工程,相当于领头羊。war工程就是一个web工程,通常存前台页面的jsp、js、css文件等。jar工程的话就是用来存放jar包,那些具有业务逻辑,但是不是页面的工程都定义为jar工程。

    分布式项目的maven构建:

    通常对于大型的分布式项目我们会采用分层的结构,即先建立一个parent的聚合pom工程,在这里定义所使用jar包的版本,以后所有建立的子工程都继承与此parent工程。

    然后建立一个专门是工具的jar工程,即管理项目中使用到的工具类,比如junit、json等等这些,要依赖parent。

    通常我们采用框架来搭建系统,都是用SSH或者SSM的方法,这里不免就涉及到各个层次:dao、service、controller这些层次。而一个网站系统的话涉及到前台后台,所以建立一个manager工程来建立后台系统(pojo,mapper,service,web的子工程)。

    前台系统也是依赖parent工程,服务工程也依赖parent。这样jar包就很统一,项目部署的时候就很方便了。

    SSM所使用到的jar包:

    <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-fix</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>
    

      maven中会涉及到dependencies与dependencyManagement的区别

    DepencyManagement应用场景

             当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。

             由于我们的模块很多,所以我们又抽象了一层,抽出一个itoo-base-parent来管理子项目的公共的依赖。为了项目的正确运行,必须让所有的子项目使用依赖项的统一版本,必须确保应用的各个项目的依赖项和版本一致,才能保证测试的和发布的是相同的结果。

            在我们项目顶层的POM文件中,我们会看到dependencyManagement元素。通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号。所以parent工程使用dependencyManagement来管理这些工具类,相当于将工具类定好了型号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。

    后期内容补充:如果没有使用这个dependencyManagement这个便签的话,凡是子类依赖父类的jar包,会将所有的jar全部到子工程中,但是这个是不必要的,所以有了这个标签,子类只需要添加自己需要的jar包即可。所以必须加上这个标签。

    至于单独建立一个工具类,我们是希望添加的时候方便些,以至于不用经常修改parent这父类级别的文件。

    来看看我们项目中的应用:

                                                                                                  pom继承关系图:

    在maven中构建项目,使用的tomcat我们也是利用插件来完成的,这样部署方便许多。

                                                                         依赖关系:

  • 相关阅读:
    unity3D打造skybox淡入淡出
    FastGUI for NGUI教程
    (转)oracle的split函数
    (转)oracle嵌套表示例
    (转)pipe row的用法, Oracle split 函数写法.
    (转)Oracle 包(Package)
    (转)Oracle存储过程中的事务
    distinct与order by
    Oracle存储过程使用总结
    (转)Oracle中动态SQL详解
  • 原文地址:https://www.cnblogs.com/fengli9998/p/6439156.html
Copyright © 2020-2023  润新知