首先声明,本次搭建框架使仿照ibase4J的架构进行搭建,结合了自己的一些理解做了一些修改,基本上都是复用ibase4J所采用的框架和代码。开此博客的目的是为了让自己以及大家更了解ibase4J的框架和代码,同时也能增加大家动手能力。博客主要为已经有一些java知识,但是还没有大坚果框架的同学学习,如果水平比较高的可以自行阅读ibase4j的源码。
facede模块仅依赖于base模块,在pom.xml文件做如下配置
<dependency>
<groupId>org.immortal4JgroupId>
<artifactId>immortal4J-baseartifactId>
<version>${project.version}version>
<exclusions>
<exclusion>//表示facede只依赖与base,而不会依赖base的依赖(也就是传递依赖)
<groupId>*groupId>
<artifactId>*artifactId>
exclusion>
exclusions>
dependency>
service模块和web模块都依赖于base模块和facade模块,pom.xml添加配置如下:
<dependency>
<groupId>org.immortal4JgroupId>
<artifactId>immortal4J-baseartifactId>
<version>1.1.0version>
<scope>compilescope>
<exclusions>
<exclusion>
<artifactId>*artifactId>
<groupId>*groupId>
exclusion>
exclusions>
dependency>
<dependency>
<groupId>org.immortal4JgroupId>
<artifactId>immortal4J-sys-facadeartifactId>
<version>1.1.0version>
<scope>compilescope>
<exclusions>
<exclusion>
<artifactId>*artifactId>
<groupId>*groupId>
exclusion>
exclusions>
dependency>
开发过程中,我们再不同的环境有不同的参数,为了方便切换,所以使用maven配置多个环境。
在主项目的pom中做如下配置
<profiles>
<profile>
<id>productid>
<properties>
properties>
<build>
<resources>
<resource>
<directory>src/main/javadirectory>
<includes>
<include>**/*.propertiesinclude>
<include>**/*.xmlinclude>
includes>
<filtering>truefiltering>
resource>
<resource>
<directory>src/main/resourcesdirectory>
<excludes>
<exclude>config/local/*exclude>
<exclude>config/test/*exclude>
excludes>
resource>
resources>
build>
profile>
<profile>
<id>testid>
<properties>
properties>
<build>
<resources>
<resource>
<directory>src/main/javadirectory>
<includes>
<include>**/*.propertiesinclude>
<include>**/*.xmlinclude>
includes>
<filtering>truefiltering>
resource>
<resource>
<directory>src/main/resourcesdirectory>
<excludes>
<exclude>config/local/*exclude>
<exclude>config/product/*exclude>
excludes>
resource>
resources>
build>
profile>
<profile>
<id>localid>
<build>
<finalName>${project.name}finalName>
<resources>
<resource>
<directory>src/main/javadirectory>
<includes>
<include>**/*.propertiesinclude>
<include>**/*.xmlinclude>
includes>
<filtering>truefiltering>
resource>
<resource>
<directory>src/main/resourcesdirectory>
<excludes>
<exclude>config/test/*exclude>
<exclude>config/product/*exclude>
excludes>
resource>
resources>
build>
profile>
profiles>
图中分别配置了product,test,local三个环境,分别代表生产,测试,本地开放的环境。三个环境的配置文件properties将分别放在resources/config下面的product,test,local文件夹下。
在local环境中的build节点下添加如下配置:
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat7-maven-pluginartifactId>
<version>2.2version>
<executions>
<execution>
<id>run-war-onlyid>
<phase>pre-integration-testphase>
<goals>
<goal>run-war-onlygoal>
goals>
execution>
executions>
<configuration>
<warDirectory>target/${project.name}warDirectory>
<path>/path>
<contextReloadable>truecontextReloadable>
<uriEncoding>UTF-8uriEncoding>
<port>${server.port}port>
<url>http://localhost:${server.port}/managerurl>
<server>tomcatserver>
<username>adminusername>
<password>adminpassword>
<contextReloadable>truecontextReloadable>
<systemProperties>
<webapps>
<webapp>
<groupId>${project.name}groupId>
<artifactId>${project.name}artifactId>
<version>${project.version}version>
<type>${project.packaging}type>
<asWebapp>trueasWebapp>
<contextPath>/contextPath>
webapp>
webapps>
systemProperties>
configuration>
plugin>
plugins>
pluginManagement>
这一段代码是配置local环境运行时使用的tomcat,里面有一个server.port参数,代表的运行时的端口号。分别在service模块和web模块添加这个属性(为什么是这两个模块,因为这两个模块是最终生成war包并部署运行的模块)。
在service和web中分别添加下面这段代码,并配置不同的端口号
<properties>
<server.port>8091server.port>
properties>
在immortal4J项目根目录下添加pom-sys-web-server.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.0modelVersion>
<parent>
<groupId>org.immortal4JgroupId>
<artifactId>immortal4JartifactId>
<version>1.1.0version>
<relativePath>./relativePath>
parent>
<artifactId>immortal4J-sys-service-serverartifactId>
<name>${project.artifactId}name>
<packaging>pompackaging>
<url>http://maven.apache.orgurl>
<modules>
<module>immortal4J-basemodule>
<module>immortal4J-sys-facademodule>
<module>immortal4J-sys-servicemodule>
modules>
project>
右键点击工具栏的run-》run configuration-》maven build-》new
按下图配置
按完run以后,maven开始打包项目并部署,如下图所示Running war on http://localhost:port/则部署成功。没有部署成功的查看日志找原因。
配置完成后还可以通过右键点击immortal4J-》run as -》maven build启动
在immortal4J项目根目录下添加pom-sys-service-server.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.0modelVersion>
<parent>
<groupId>org.immortal4JgroupId>
<artifactId>immortal4JartifactId>
<version>1.1.0version>
<relativePath>./relativePath>
parent>
<artifactId>immortal4J-sys-web-serverartifactId>
<name>${project.artifactId}name>
<packaging>pompackaging>
<url>http://maven.apache.orgurl>
<modules>
<module>immortal4J-basemodule>
<module>immortal4J-sys-facademodule>
<module>immortal4J-sys-servicemodule>
modules>
project>
与web的配置一样,只是Goals变成了clean package -P local tomcat7:run-war-only -f pom-sys-web-server.xml
war生成在项目的target文件夹下,用360压缩打开可以看到,里面的结构
从图中可以看到,service项目的war里面包含了base模块个facade模块生成的jar包。
至此项目已经可以运行。
代码下载
下一篇我们将spring框架以及常用的jar包配置到项目中。