maven分组件

一、为什么分组件

      分组件主要是为了开发分工,层次清晰,维护方便,更能提高java的扩展这个特点进行拆分。并且能对工程中相关依赖更少的部分打包成jar,提高重用性。

二、如何分组件
     关于组件的拆分,目前suning使用的是按照业务处理层进行划分,主要分为:api(对外提供服务)web(action/Controller页面交互)Biz(业务处理组装层)Service(基本业务处理层)dmo(数据库交互持久层)common(公用层--不与任何业务关联)war(页面、配置文件以及最终发布war架包<针对web应用而言>)。此种组件拆分一般coder理解很是方便,只是有些人不理解为什么Biz和service的关系,其实这个只是一个规则而已,eg:业务非常复杂,不是一个service就可以解决,可以分多个service进行处理,biz进行组合,流程组装全部放在biz层进行封装。

三、maven中实践
     在maven中,为了进行组件拆分,需要进行以下几个步骤:
   1、首先按照建立maven project项目步骤进行创建工程,创建工程中选择的packaging类型为pom。建好后,删除代码中的src文件夹(无用),此时的工程可能在working中看不到,需要选择working后,进行编辑添加。
   2、右击刚建的工程,新建project,选择的是maven中的maven module,填写Name后,

next到

选择建立的组件类型。Finsh后,需要刷新一次就可以在working中看到module。一般web项目只有一个module为war。
3、相关注意事项:
    (1)、pom建好后删掉src,并且为了多环境需要建deploy(用法下次专门讨论)
    (2)、建立的module是组件,一般非组件独有的依赖放到pom的pom.xml中配置。只有专有的才需要在module中pom.xml独立配置。
    (3)、包名在各个module中劲量不要重复
    (4)、对于需要对外提供服务的项目,api中可以通过提供不同类型的服务(http、webService等等类型)建立专用的包。
    (5)、version最好不要使用默认的,可以从1.0.0开始。以后每次变更必须调整version。防止出现其他系统依赖错误。。。。

附录:pom中的pom.xml配置
   
   
<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.ghostp.sitest</groupId>
<artifactId>mvn-si-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>sitest</name>
<description>sitest</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<freemarker-version>2.3.19</freemarker-version>
<slf4j-version>1.6.6</slf4j-version>
<org.springframework-version>3.1.1.RELEASE</org.springframework-version>
<junit-version>4.8.1</junit-version>
<servlet-version>2.5</servlet-version>
<logback-version>1.0.6</logback-version>
<site-version>2.4.2</site-version>
<strust-version>2.2.3</strust-version>
<com.alibaba.druid-version>1.0.9</com.alibaba.druid-version>
<fastjson-version>1.1.8</fastjson-version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit-version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet-version}</version>
<scope>provided</scope>
</dependency>
<!-- Web related -->
<dependency>
<groupId>opensymphony</groupId>
<artifactId>sitemesh</artifactId>
<version>${site-version}</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>${freemarker-version}</version>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- data -->
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${com.alibaba.druid-version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson-version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-tiles-plugin</artifactId>
<version>${strust-version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback-version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<modules>
<module>mvn-si-dmo</module>
<module>mvn-si-biz</module>
<module>mvn-si-web</module>
<module>mvn-si-client</module>
<module>mvn-si-common</module>
<module>mvn-si-war</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<showWarnings>true</showWarnings>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
<configuration>
<attach>true</attach>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3</version>
<configuration>
<archive>
<addMavenDescriptor>true</addMavenDescriptor>
<index>true</index>
<manifest>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值