如何搭建一个多模块分布式maven项目
maven搭建项目使用方便,灵活性高,自动依赖,使项目高内聚,低耦合,轻松编译、打包、部署等等。
我的环境
InteIIiJ IDEA 2016.1
maven 3.0.5
jdk 1.7
tomcat 7.0.72
window7
目录结构
1、搭建介绍
demo
|-- demo-common //公用模块 jar(quickstart)
|-- demo-parent //父模块 pom(quickstart)
|-- demo-wechat //其中一个子模块 war(webapp)
|-- demo-xxx
|-- ...
简单介绍
demo-common:公用模块,将自动打包为jar,放入指定项目war
demo-parent:父模块,统一管理各个模块的jar包和版本,打包等
demo-wechat:其中一个子模块(即是项目,可多个)关联了模块common
2、也可搭建
demo
|-- demo-api //api接口模块 jar(quickstart)
|-- demo-parent //父模块 pom(quickstart)
|-- demo-service //serice服务模块 jar(quickstart)
|-- demo-web //web模块 war(webapp)
|-- ...
一、创建根目录
1、进入IDEA项目工作空间目录(如我的是:D:\XQ\IdeaProjects)。
2、在该目录下新建一个目录demo,作为项目的根目录。
3、项目的所有模块将存在这个demo目录。
二、创建父项目
1、开始
打开IDEA,点击新建项目。
如果是第一次打开,点击Create New Project。
如果不是,点击File->New->Project。
2、选择
接着选择Maven -> 勾选Create from archetype -> maven-archetype-quickstart。
3、命名
填写 GroupId 和 ArtifactId 。
GroupId:指当前jar所属命名空间,当前Maven项目隶属项目(实际对应JAVA的包的结构, 是main目录里java的目录结构)
ArtifactId:当前项目模块名称,实际项目中的一个模块(项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称)
这里填写:
GroupId:com.weizhixi
ArtifactId:demo-parent
4、maven
根据你的maven配置选择Maven home directory、勾选User settings file和Local repository
是否需要Override。我这里选择默认就好。
5、项目
填写项目名称:demo-parent。注意路径!在demo目录下。然后点击完成。
6、配置
由于父项目需要用于管理java版本打包部署等,代码不写在这里,不需要src,故删掉。
修改demo-parent下的 pom.xml的packaging值 jar 为 pom
第三步:创建公用项目
1、开始
选择 demo-parent 点击File->New->Module。
2、选择
接着选择maven -> 勾选create from archetype -> maven-archetype-quickstart。
3、命名
这里需要注意:第一项选none、第二项默认就好,第三项默认、第四项填写你的公用模块名称、第五项默认。
点击Add as module to 选择 <none>。
填写公共模块名称:demo-common。
4、maven
根据你的maven配置选择。
5、项目
填写公用模块名称:demo-common。注意路径!也在demo目录下。点击完成。
第四步:创建子项目
1、开始
选择 demo-parent 点击File->New->Module。
2、选择
接着选择maven -> 勾选create from archetype -> maven-archetype-webapp。
3、命名
点击Add as module to 选择 <none>。
填写子模块(项目)名称,例如我这个子项目作为微信项目,命名为:demo-wechat。
4、maven
根据你的maven配置选择。
5、项目
填写公用模块名称:demo-wechat。注意路径!也在demo目录下。点击完成。
第五步:项目配置
1、目录
创建完之后目录机构如图所示。
2、配置项目
点击File->Project Structure
3、设置项目
选择Modules->demo-common->sources
3.1、src.main.java目录标志为Sources(蓝色)
3.2、src.test.java目录标志为Tests(绿色)
接着选择demo-common->sources
3.3、在src/main下,右键New Folder新建java目录
3.4、src.main.java目录标志为Sources(蓝色)
4、配置pom
添加相关依赖包,这里配置依赖为:Springmvc4.3 + Hibernate4 .3 + jpa1.7
jar包及版本在parent配置就好,其他子项目不需要配置。
demo-parent->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.weizhixi</groupId> <artifactId>demo-parent</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>../demo-common</module> <module>../demo-wechat</module> </modules> <name>demo-parent</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compile.plugin.version>2.5.1</maven.compile.plugin.version> <maven.surefire.plugin.version>2.12.4</maven.surefire.plugin.version> <spring.version>4.3.1.RELEASE</spring.version> <spring-data-jpa.version>1.7.1.RELEASE</spring-data-jpa.version> <hibernate.version>4.3.6.Final</hibernate.version> <hibernate-validator.version>4.3.2.Final</hibernate-validator.version> <commons-beanutils.version>1.9.1</commons-beanutils.version> <commons-io.version>2.4</commons-io.version> <commons-fileupload.version>1.2.1</commons-fileupload.version> <commons-codec.version>1.9</commons-codec.version> <commons-lang3.version>3.2.1</commons-lang3.version> <jsp.version>2.1</jsp.version> <jstl.version>1.2</jstl.version> <servlet.version>3.0.1</servlet.version> <mysql.version>5.1.13</mysql.version> <alibaba-druid.version>1.0.9</alibaba-druid.version> <orika.version>1.4.2</orika.version> <jackson.version>2.5.0</jackson.version> <slf4j.version>1.7.5</slf4j.version> <junit.version>3.8.1</junit.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</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-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>${spring-data-jpa.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>${hibernate-validator.version}</version> </dependency> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>${commons-beanutils.version}</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>${commons-io.version}</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>${commons-codec.version}</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${commons-lang3.version}</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>${jsp.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${servlet.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${alibaba-druid.version}</version> </dependency> <dependency> <groupId>ma.glasnost.orika</groupId> <artifactId>orika-core</artifactId> <version>${orika.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven.compile.plugin.version}</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${maven.surefire.plugin.version}</version> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build> </project>,
注意:父项目pom已经加入modules关联了demo-common、demo-wechat了
demo-common->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"> <parent> <artifactId>demo-parent</artifactId> <groupId>com.weizhixi</groupId> <version>1.0-SNAPSHOT</version> <relativePath>../demo-parent/pom.xml</relativePath> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>demo-common</artifactId> <packaging>jar</packaging> <name>demo-common</name> <url>http://maven.apache.org</url> </project>
注意:作为公用模块这里无需关联依赖。
demo-wechat->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/maven-v4_0_0.xsd"> <parent> <artifactId>demo-parent</artifactId> <groupId>com.weizhixi</groupId> <version>1.0-SNAPSHOT</version> <relativePath>../demo-parent/pom.xml</relativePath> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>demo-wechat</artifactId> <packaging>war</packaging> <name>demo-wechat</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>com.weizhixi</groupId> <artifactId>demo-common</artifactId> <version>${project.version}</version> </dependency> </dependencies> <build> <finalName>demo-wechat</finalName> </build> </project>
注意:这里需要加入对 demo-common 的依赖,如代码所示。
5、配置tomcat
点击Edit Configurations
打开后,点击+加号,选择Tomcat Server -> Local
命名好后,点击Deployment,接着点击+加号,后选择demo-wechat:war exploded
ok -> apply -> ok
6、打包
点击Reimport All maven Projects,刷新重新导入所有的Maven项目jar
clean清除,compile编译,package打包。
生成的war包直接可以部署的。
[INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] demo-parent ....................................... SUCCESS [0.003s] [INFO] demo-common ....................................... SUCCESS [3.867s] [INFO] demo-wechat ....................................... SUCCESS [5.875s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 9.946s [INFO] Finished at: Wed Dec 20 01:02:31 GMT+08:00 2017 [INFO] Final Memory: 16M/39M [INFO] ------------------------------------------------------------------------ Process finished with exit code 0
出现 code 0 表示打包成功。
注意看下:打包的时候wechat的lib上已经生成关联common的jar包了。
如:我的,D:\XQ\IdeaProjects\demo\demo-wechat\target\demo-wechat\WEB-INF\lib\demo-common-1.0-SNAPSHOT.jar
点击 tomcat Run或者Debug, 然后点击运行就可以了。
配置完毕,接下来就是开发、编码。
I 也是略懂皮毛,说的不对或不好的地方请指出给以改正哈,互相学习互相提高哈。
已下载:289 次
原创文章,转载请注明出处:https://www.weizhixi.com/article/36.html