最近刚换公司,新公司使用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发布的方式如下图: