搭建简单的maven多模块管理附带源码
最近刚换公司,新公司使用maven进行源码管理。我这里进行一下简答的学习搭建,希望对大家有所帮助。这里我搭建一个例子,使用cms的web端,dao,service端进行分模块。
基本格局如下:
cms
???? | - -pom.xml(pom)
???? | - -dao
???? | ? ? | - -pom.xml(jar)
???? | - -service
???? | ? ? | - -pom.xml(jar)
???? | - -website
???? | ? ? | - -pom.xml(war)
上面示意图中,有一个父项目cms,聚合子模块dao,service,website。每个模块,包含父模块,都有一个pom.xml.图中也标识了每个模块的打包方式。
这些模块的依赖关系是:
?? service? -- >dao
?? website -- > service
下面列一下各个模块的pom.xml
cms目录下的pom.xml
?
<?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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.gxkj</groupId><artifactId>cms</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><name>${project.groupId} ${project.artifactId} ${project.version}</name><modules><module>dao</module><module>service</module><module>website</module></modules><dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-servlet_2.5_spec</artifactId> <version>1.2</version> </dependency></dependencies><build><finalName>cms</finalName></build></project>?提供一些依赖包,子模块继承时候,自动继承,不需要重复写。
?
dao里pom.xml代码如下:
?
<?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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.gxkj</groupId><artifactId>cms</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.gxkj.cms</groupId><artifactId>dao</artifactId><name>${project.groupId} ${project.artifactId} ${project.version}</name><build> <finalName>cms-dao</finalName> </build></project>?service里pom.xml代码如下
?
?
<?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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.gxkj</groupId><artifactId>cms</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>service</artifactId><groupId>com.gxkj.cms</groupId><name>${project.groupId} ${project.artifactId} ${project.version}</name><dependencies><dependency><groupId>com.gxkj.cms</groupId><artifactId>dao</artifactId><version>${project.version}</version></dependency></dependencies><build> <finalName>cms-service</finalName> </build></project>?website里pom.xml代码如下
?
?
<?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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.gxkj</groupId><artifactId>cms</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.gxkj.cms</groupId><artifactId>website</artifactId><packaging>war</packaging><dependencies><dependency><groupId>com.gxkj.cms</groupId><artifactId>service</artifactId><version>${project.version}</version></dependency></dependencies><build> <finalName>cms-web</finalName> </build></project>?子模块通过<parent>标签从父模块继承各种属性。使用eclipse导入项目,具体步骤是File-import-existing maven projects->选择目录cms所在目录,在高级里,选择命名模板[groupId].[artifactId]->finish。
?
发布时,在项目cms上右键,Run as? ->Run Configurations->base directory里选择cms项目,Goals里填写命令:clean dependency:copy-dependencies package 。如图:

?
? 点击run。以后通过左上角的debug,run按钮即可。
?附上源码供参考使用。
?
多模块开发测试,使用tomcat发布的方式如下图:

?
?