Maven建立多模块项目-图文并茂--入门级别
maven多模块项目构建
maven多模块项⽬构建描述 ⼀个⼤的企业级项⽬通常跨越了数⼗万⾏代码,牵涉了数⼗或数百软件⼈员的努⼒。
如果开发者在同⼀个项⽬下开发,那么项⽬的管理、构建将会变得很难控制。
因此设计⼈员会将项⽬划分为多个模块,多个模块独⽴开发、构建, 最终通过依赖整合到⼀起。
Maven的聚合特性能够把项⽬的各个模块集合在⼀起构建,⽽Maven的继承特性则能帮助抽取各模块相同的依赖和插件配置,在简化POM的同时,还能促进各个模块配置的⼀致性。
聚合 通过⼀个POM模块来统⼀构建多个模块,Maven可以根据依赖关系计算出构建顺序,然后逐⼀构建。
如果没有聚合,则需要每个模块⼿动构建聚合pom:pom.xml:。
<packaging>pom</packaging><modules><module>../complex_base</module><module>../complex_user</module><module>../complex_menu</module>。
</modules>。
配置解析: 聚合模块只需要pom.xml⽂件,其他⽬录可以删除,在该⽂件中声明packaging为pom module元素⽤来配置聚合的模块,被聚合的模块可以和聚合模块是⽗⼦⽬录,也可以是平⾏⽬录 在聚合模块执⾏对应的构建⽣命周期阶段,将会按序执⾏各个模块的对应阶段继承继承是指POM的继承。
⼦模块继承⽗模块,继承的是POM,也可以理解为配置的继承。
通过继承能抽取各模块相同的依赖和插件配置到⽗模块,在简化POM的同时,还能促进各个模块配置的⼀致性。
⽗pom:pom.xml:<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>plex</groupId><artifactId>complex_integrated</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><name>complex_integrated</name><url></url><!-- 聚合:mvn package,maven会计算依赖关系,逐模块构建 --><modules><module>../complex_base</module><module>../complex_user</module><module>../complex_menu</module><module>../complex_sample</module><module>../complex_web</module></modules><!--jetty --><build><pluginManagement><plugins><!-- mvn jetty:run -Djetty.port=9999 --><plugin><groupId>org.eclipse.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>9.2.22.v20170606</version></plugin></plugins></pluginManagement></build><!-- 依赖管理:dependencyManagement下的依赖,不会引⼊当前项⽬,也不会引⼊⼦项⽬,只有在⼦项⽬中通过dependencies下的⼦元素进⾏了声明才会引⼊ --><!-- 依赖管理:dependencyManagement可以在提供继承的便利性和统⼀性的基础上,提供⼀定的灵活性,pluginManagement的原理是⼀致的 --><dependencyManagement><dependencies><!-- javax.servlet --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency></dependencies></dependencyManagement></project>⼦pom:pom.xml:<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>plex</groupId><artifactId>complex_integrated</artifactId><version>0.0.1-SNAPSHOT</version><!-- 默认../pom.xml --><relativePath>../complex_integrated/pom.xml</relativePath></parent><artifactId>complex_web</artifactId><packaging>war</packaging><name>complex_web</name><build><plugins><!-- mvn -Djetty.port=9999 jetty:run --><plugin><groupId>org.eclipse.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>9.2.22.v20170606</version></plugin></plugins><finalName>complex_web</finalName></build><dependencies><dependency><groupId>plex</groupId><artifactId>complex_user</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies></project>配置解析: dependencyManagement下的依赖,不会引⼊当前模块,也不会引⼊⼦模块,只有在⼦模块中通过 dependencies下的⼦元素进⾏了声明才会引⼊。
IntelliJIDEA构建maven多模块项目
IntelliJIDEA构建maven多模块项⽬我们在开发中因为项⽬之间需要依赖所以会在maven创建多个项⽬配置依赖,这种项⽬结构主要应⽤在⼤型项⽬中,多⼈协作开发1.创建⼀个项⽬ File ->NEW -> Projec
2.选择最下边的Empty Project 然后点击Next
3.输⼊项⽬名称点击Finish
4.点击Modules 点加号选择 New Module
5.选择maven 选中 Create from archetype 复选框选择maven模板点击Next
6.写maven的坐标,“groupId”,“artifactId”,以及“version”,其中groupId是公司域名的反写,⽽artifactId是模块名,version就是该模块所对应的版本号,填写完之后,点击【Next】
7.选择本地的maven,选择maven得配置⽂件路径及本地maven仓库路径,选择完成后点击【Next】
8.填写模块名称,后点击【Finish】
9.创建第⼆个模块(同上边第 4 第 5步骤)
执⾏完 4、5步骤会进⼊如下页⾯会发现 Parent 后边多了⼀个 ...的按钮点开它选择maven test 模块作为⽗类继承过来
10.输⼊⼦模块的名称点击next
11.选择本地的maven,选择maven得配置⽂件路径及本地maven仓库路径,选择完成后点击【Next】
12..填写模块名,后点击【Finish】
13.此时创建好了两个模块 maven test为⽗模块 maven test1为⼦模块想要创建更多的模块按照以上步骤创建即可最后点击OK
14.会展⽰项⽬结构 maven test1依赖maven test。
SpringBootMaven多模块项目搭建
SpringBootMaven多模块项目搭建展开全文Spring Boot(2.0) Maven多模块项目搭建简介版本号说明创建时间创建人1.0 创建2018-05-15 吴桂镇一、搭建环境-编译器:Eclipse Oxygen.1a (4.7.1a)-jdk:1.8-Maven : 3.0-操作系统:win10二、项目创建1.parent新建一个maven project 如下图点击next填写相关信息,点击finish。
注意Packaging 应选择pom创建之后效果如下图删除 src文件夹,并修改pom.xml。
修改后修过如下图,其中<parent></parent>中是对spring boot的集成<modules></modules>是对maven子模块项目的引用,正常情况下创建子模块后才在parent的pom.xml中添加一条对应的module,此处预先添加好。
2.core创建maven项目点击finish 创建完毕。
修改pom.xml添加<parent>对父模块的依赖,修改后如下图3.api创建过程类似于core 但是在pom.xml中添加对core的依赖4.serviceService 为springboot项目,使用eclipse创建时应先添加spring sts插件,或者去下载完成后导入进来,下面介绍使用sts插件创建的。
创建完毕之后修pom.xml,修改<parent>里的引用,从spring-boot-starter-parent 到 demo-parent,再引用api和core。
因为service不是一个web应用,可以不依赖spring-boot-starter-web5.webWeb也是一个springboot的项目,创建过程与service类似,只是在pom.xml中增加了下面的依赖。
三、集成dubbo1.在api中添加接口和对应的实体类demo以themis数据库intf_fee表为例实体类:@SuppressWarnings("serial")public** class IntfFee implements** Serializable{**private** String intfId;**private** String plateCde;**private** String intfName;**private** BigDecimal intfCost;**private** BigDecimal intfPrice;**private** String classType;**private** String intfStatus;**private** String remark;**private** BigDecimal feeRowBegin;**private** BigDecimal feeRowEnd;**public** String getIntfId() {**return** intfId;}**public**** void** setIntfId(String intfId) { **this**.intfId = intfId;}**public** String getPlateCde() {**return** plateCde;}**public**** void** setPlateCde(String plateCde) {**this**.plateCde = plateCde;}**public** String getIntfName() {**return** intfName;}**public**** void** setIntfName(String intfName) { **this**.intfName = intfName;}**public** BigDecimal getIntfCost() {**return** intfCost;}**public**** void** setIntfCost(BigDecimal intfCost) { **this**.intfCost = intfCost;}**public** BigDecimal getIntfPrice() {**return** intfPrice;}**public**** void** setIntfPrice(BigDecimal intfPrice) { **this**.intfPrice = intfPrice;}**public** String getClassType() {**return** classType;}**public**** void** setClassType(String classType) { **this**.classType = classType;}**public** String getIntfStatus() {**return** classType;}**public**** void** setIntfStatus(String intfStatus) {**this**.intfStatus = intfStatus;}**public** String getRemark() {**return** remark;}**public**** void** setRemark(String remark) {**this**.remark = remark;}**public** BigDecimal getFeeRowBegin() {**return** feeRowBegin;}**public**** void** setFeeRowBegin(BigDecimal feeRowBegin) {**this**.feeRowBegin = feeRowBegin;}**public** BigDecimal getFeeRowEnd() {**return** feeRowEnd;}**public**** void** setFeeRowEnd(BigDecimal feeRowEnd) { **this**.feeRowEnd = feeRowEnd;}•1•2•3•4•5•6•7•8•9•10•11•12•13•14•15•17 •18 •19 •20 •21 •22 •23 •24 •25 •26 •27 •28 •29 •30 •31 •32 •33 •34 •35 •36 •37 •38 •39 •40 •41 •42 •43 •44 •45•47 •48 •49 •50 •51 •52 •53 •54 •55 •56 •57 •58 •59 •60 •61 •62 •63 •64 •65 •66 •67 •68 •69 •70 •71 •72 •73 •74 •75•77 •78 •79 •80 •81 •82 •83 •84 •85 •86 •87 •88 •89 •90 •91 •92 •93 •94 •95 •96 •97 •98 •99 •100 •101 •102 •103 •104 •105•107 •108 •109 •110 •111 •112 •113 •114 •115 •116 •117 •118 •119 •120 •121 •122 •123 •124 •125 •126 •127 •128 •129 •130 •131 •132 •133 •134 •135•137•138•139•140接口public** interface** IDemoService {String sayHello(String message);•1•2}2.配置服务端在demo-service pom.xml中增加dubbo的依赖,如下<!–dubbo-springBoot依赖–><dependency><groupId>com.alibaba.spring.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.0.0</version></dependency><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.2</version></dependency>•1•2•3•4•5•6•7•8•9•10•11•12•13•14•15•16•17•18•19•20在application.properties中添加dubbo的相关配置,如下dubbospringboot 配置spring.dubbo.application.id=provider=providerspring.dubbo.registry.address=zookeeper://127.0.0.1:2181 spring.dubbo.server=true=dubbospring.dubbo.protocol.port=20880在启动类中添加@EnableDubboConfiguration注解编写service3.配置消费端在demo-web的pom.xml添加依赖<!--dubbo-springBoot依赖--><dependency><groupId>com.alibaba.spring.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>${dubbo-spring-boot.version}</version></dependency><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>${zk-client.version}</version></dependency>•1•2•3•4•5•6•7•8•9•10•11•12•13•14•15•16•17•18•19•20•21•22在application.properties中添加dubbo的配置Dubbo 服务消费者配置=consumerspring.dubbo.application.id=consumerspring.dubbo.protocol.port=20800=dubbospring.dubbo.registry.address=zookeeper://127.0.0.1:2181 注册中心请求超时时间设置操作设置消费者超时时间(通过DubboConfig去读取,配置),默认使用服务端的超时时间,客户端配置时间则需要读取配置然后新增dubboContext.xml 其中配置<dubbo:consumer timeout="${spring.dubbo.consumer.timeout}" cluster="failfast"/>此项目使用服务端配置超时时间,故没有新增dubboContext.xml文件spring.dubbo.consumer.timeout=300006包路径也可以单独配置出dubbo包,将与dubbo交互的内容都存放在此处,分层明确spring.dubbo.scan=com.caxs在启动类中添加 @EnableDubboConfiguration 注解编写测试controller@RestControllerpublic** class** TestController {@Reference**private** IDemoService demoService;@RequestMapping("/")**public** String sayHello(String msg) {**return** demoService.sayHello(msg);}•1•2•3•4•5•6•7•8•9•10•11•12}注:使用@Reference来引用服务端提供的服务四、集成mybatis使用mysql 数据库在demo-service中添加相应的依赖(mybatis,mysql,连接池)<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId> <scope>runtime</scope></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency>•1•2•3•4•5•6•7•8•9•10•11•12•13•14•15•16•17•18•19•20•21•22•23•24•25•26•27•28•29•30•31•32•33•34•35•36•37•38•39•40在配置文件中添加配置,采用yml格式的如下spring:application:name: demo-service#DATABASE CONFIG•1•2•3•4datasource:driver-class-name: com.mysql.jdbc.Driverurl: your urlusername: your usernamepassword: your passwordtype: com.alibaba.druid.pool.DruidDataSource #这里是配置druid连接池,以下都是druid的配置信息filters: stat,wall,log4jmaxActive: 20initialSize: 1maxWait: 60000minIdle: 1timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: select 'x'testWhileIdle: **true**testOnBorrow: **false**testOnReturn: **false**poolPreparedStatements: **true**maxOpenPreparedStatements: 20connection-properties:druid.stat.merggSql=ture;druid.stat.slowSqlMillis=5000 •1•2•3•4•5•6•7•8•9•10•11•12•13•14•15•16•17•18•19•20•21•22•23•24•25•26•27•28•29•30•31•32•33•34•35•36•37•38mybatismybatis:mapper-locations: classpath*:/daos/**Dao.xml #把xml文件放在com.XX.mapper.*中可能会出现找到的问题,这里把他放在resource下的mapper中#实体扫描,多个package用逗号或者分号分隔#typeAliasesPackage: com.tdx.account_service.entity #这里是实体类的位置configuration:map-underscore-to-camel-case: **true**cache-enabled: **false**•1•2•3•4logging 不同的目录不同的日志输出级别logging:level:root: info•1•2com.wugz.demo: debug添加dao层的接口和xml文件(此处示例使用注解的方式代替xml)接口:@Mapperpublic interface IntfFeeDao {/\*\*\* 方式1:使用注解编写SQL。
使用Maven构建多模块层级项目
使⽤Maven构建多模块层级项⽬Maven多模块项⽬ Maven多模块项⽬,适⽤于⼀些⽐较⼤的项⽬,通过合理的模块拆分,实现代码的复⽤,便于维护和管理。
尤其是⼀些开源框架,也是采⽤多模块的⽅式,提供插件集成,⽤户可以根据需要配置指定的模块。
项⽬结构如下: test-hd-parent (⽗级) ---pom.xml ---test-hd-api (第三⽅接⼝层) ----pom.xml ---test-hd-foundation (基础⼯具层) ----pom.xml ---test-hd-resource (资源层) ----pom.xml ---test-hd-service (逻辑业务层) ----pom.xml ---test-hd-modules (web层) ----pom.xml ---test-hd-www (web模块1) ----pom.xml ---test-hd-admin (web模块2) ----pom.xml 创建⼀个⽗maven⼯程 新建⼀个maven项⽬,选择存储位置,并选择创建⼀个简单的maven⼯程 输⼊Group Id、Artifact Id、Packaging,packaging选择pom包 ⽣成⽗⼯程,pom.xml如下 删除⼯程中的src ⽬录创建⼦模块 右击⽗⼯程名---》New---》Project,然后选择新建⼀个maven module⼯程 设置⼦⼯程名以及⽗⼯程,再设置快速创建模式 得到⼦⼯程(test-hd-api,第三⽅接⼝层),设置编译的jdk 同理设置,⼦模块:test-hd-foundation(基础⼯具层)、test-hd-resource(资源层) 、test-hd-service(逻辑业务层) 新建test-hd-modules (web层),选择创建⼀个a simple project,输⼊Group Id、Artifact Id、Packaging,packaging选择pom包创建web⼦模块 web⼦模块在建在test-hd-modules (web层)⾥⾯,右击test-hd-modules ⼯程名---》New---》Project,然后选择新建⼀个maven module⼯程,设置⼦⼯程名以及⽗⼯程,选择新建web项⽬ 配置maven web项⽬,参照: 同理可以配置其他的web⼦模块 test-hd-admin(web模块2)配置个模块的依赖 在parent项⽬pom.xml中建⽴依赖管理(dependencyManagement)<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.hd</groupId><artifactId>test-hd-parent</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><modules><module>test-hd-api</module><module>test-hd-service</module><module>test-hd-resource</module><module>test-hd-foundation</module><module>test-hd-modules</module></modules><!-- maven依赖 --><dependencyManagement><dependencies><!-- hd --><dependency><groupId>com.hd</groupId><artifactId>test-hd-api</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.hd</groupId><artifactId>test-hd-service</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.hd</groupId><artifactId>test-hd-resource</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.hd</groupId><artifactId>test-hd-foundation</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!-- Servlet --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version><scope>provided</scope></dependency><!-- jstl --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies></dependencyManagement></project>test-hd-foundation中的依赖<?xml version="1.0"?><projectxsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd" xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion><parent><groupId>com.hd</groupId><artifactId>test-hd-parent</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>test-hd-foundation</artifactId><dependencies><!-- servlet --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency></dependencies><build><plugins><!-- define the project compile level --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.7</source><target>1.7</target></configuration></plugin></plugins></build></project> test-hd-api中的依赖关系<?xml version="1.0"?><projectxsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd" xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion><parent><groupId>com.hd</groupId><artifactId>test-hd-parent</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>test-hd-api</artifactId><dependencies><dependency><groupId>com.hd</groupId><artifactId>test-hd-foundation</artifactId></dependency><!-- servlet --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency></dependencies><build><plugins><!-- define the project compile level --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.7</source><target>1.7</target></configuration></plugin></plugins><finalName>test-hd-api</finalName></build></project> test-hd-resource中的依赖关系<?xml version="1.0"?><projectxsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd" xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion><parent><groupId>com.hd</groupId><artifactId>test-hd-parent</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>test-hd-resource</artifactId><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency></dependencies><build><plugins><!-- define the project compile level --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.7</source><target>1.7</target></configuration></plugin></plugins></build></project>test-hd-service中的依赖关系<?xml version="1.0"?><projectxsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd" xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion><parent><groupId>com.hd</groupId><artifactId>test-hd-parent</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>test-hd-service</artifactId><dependencies><dependency><groupId>com.hd</groupId><artifactId>test-hd-foundation</artifactId></dependency><dependency><groupId>com.hd</groupId><artifactId>test-hd-api</artifactId></dependency><!-- servlet --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency></dependencies><build><plugins><!-- define the project compile level --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.7</source><target>1.7</target></configuration></plugin></plugins><finalName>test-hd-service</finalName></build></project> test-hd-module中的依赖关系<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.hd</groupId><artifactId>test-hd-parent</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>test-hd-modules</artifactId><packaging>pom</packaging><modules><module>test-hd-www</module><module>test-hd-admin</module></modules><dependencies><dependency><groupId>com.hd</groupId><artifactId>test-hd-foundation</artifactId></dependency><dependency><groupId>com.hd</groupId><artifactId>test-hd-service</artifactId></dependency><dependency><groupId>com.hd</groupId><artifactId>test-hd-api</artifactId></dependency><dependency><groupId>com.hd</groupId><artifactId>test-hd-resource</artifactId></dependency><!-- servlet --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency></dependencies></project> test-hd-www中的依赖关系<?xml version="1.0"?><projectxsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd" xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion><parent><groupId>com.hd</groupId><artifactId>test-hd-modules</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>test-hd-www</artifactId><packaging>war</packaging><build><plugins><!-- define the project compile level --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.7</source><target>1.7</target></configuration></plugin></plugins><finalName>test-hd-www</finalName></build></project>最后使⽤maven-update整个⼯程,右击⽗⼯程名--》Maven--》Update Project打包和发布 打包,右击⽗⼯程名 test-hd-parent---->Run As--->Maven Install 打包web⼦⼯程,右击⼯程名test-hd-www--->Run As ---> Maven Build...---> Goals: clean package--->Run 右击⼯程名test-hd-www,进⾏刷新,找到war包,放到tomcat的webapps中,启动tomcat,即可访问⼯程http://localhost:8080/test-hd-www 可以去tomcat下⾯webapps》test-hd-www》WEB-INF》lib中,看到引⽤的jar包。
Maven工程的搭建
Maven工程的搭建(图文并茂,强烈推荐)一、配置maven环境变量.(前提是java环境变量已经搭建完)1.新建系统环境变量maven_home,值为:D:\Program Files\apache-maven-3.0.3(根据自己的maven路径设置);如图:2.设置系统环境变量path,在path路径的末尾,追加“;%maven_home%\bin”,如图:在cmd窗口输入“mvn -v”,可以检查是否安装成功。
二、Eclipse中maven插件的安装1.maven插件安装点击菜单help->Install new software,进入插件安装;插件地址/sites/m2e 如图:点击next安装,安装成功后,在windows->Preferences下面就可以看到maven选项了,如图:2.maven插件配置(重要)在如图所示红线所示部分都有设置在红线maven设置如下在红线Installations设置如下:点击add按钮,加入你的maven包所在的路径在红线User Settings设置如下:(注意:User Settins中settings.xml文件和Local Repository的repository文件的位置,要跟自己本机的文件路径相同)三.项目导入设置好maven环境之后,就可以从服务器上下载代码,下载下来的代码需要做的处理有1. run as->maven install一下,即加载一下2.修改jdk,选择项目,单击右键有个Build Path,修改jdk版本,改成自己电脑上安装的jdk,如图:然后在点击java Compiler,就ok了,如图(我的是jdk1.6为例):注:在搭建好maven项目之后,如有将代码打包,将各个项目maven install ,然后在执行maven assembly:assembly ,在项目的target下就会有打包好的jar包,该jar包就可以在服务器上运行了,如是web项目就是war包;。
maven创建多模块web项目
实现步骤
创建项目目录
进入“工作空间”目录,创建名为tradework的文件夹,切换至控制台,进入该文件夹。
配置模块
生成各个模块
该步骤会依次生成项目的各个模块,但是生成的模块并没有创建依赖,只是最简单的并且符合maven要求的项目结构的模块,关于什么是maven的标准项目结构,可以参考maven 官方文档,或者《maven权威指南》。
#core 模块创建
mvn archetype:create -DgroupId=com.taobao.trade -DartifactId=trade-core
#client 模块创建
mvn archetype:create -DgroupId=com.taobao.trade -DartifactId=trade-client
#server 模块创建
mvn archetype:create -DgroupId=com.taobao.trade -DartifactId=trade-server -DpackageName=com. taobao.trade -DarchetypeArtifactId=maven-archetype-webapp
配置项目模块
关系。
生成好各个模块之后在tradework根目录下会生成三个目录,每个目录下都会有一个
配置依赖
进入tradework根目录,在pom.xml文件中加入dependencies节点,加入如下内容:
内容如下:
生成Eclipse 项目文件及包引用定义,注意,需确保定义Classpath Variables: M2_REPO,指向本地maven类库目录。
打开Eclipse ,导入工程即可。
IntelliJIDEA创建maven多模块项目(图文教程)
IntelliJIDEA创建maven多模块项⽬(图⽂教程)项⽬主要分成3个模块,wms-root为⽗模块,wms-core和wms-app(webapp类型的模块)为⼦模块。
⼀、Parent Project,创建wms-root⽗模块。
1、依次点击:File->New->Project2、左侧⾯板选择maven(不要选择Create from archetype选项),如下图,点击Next即可。
3、依次补全如下信息,点击Next4、输⼊项⽬名字。
如ModuleProject,我们主要是在这个项⽬下创建我们的⼦模块。
5、这样我们就创建好了⼀个普通项⽬,因为该项⽬是作为⼀个Parent project存在的,可以直接删除src⽂件夹。
⼆、创建⼦模块,wms-core1、在⽗模块上右键如下图操作,创建⼀个模块,该模块即为⼦模块。
2、同样不选择Create from archetype选项,因为是普通模块,Next。
、3、groupId和version继承⾃Parent project,这⾥只⽤ArtifactId,Next。
4、填写模块名称,模块名称和ArtifactId相同即可。
5、创建完成后结构如下图。
三、创建⼦模块,wms-app1、同创建wms-core的第⼀步相同。
2、在有⽹络的情况下可直接下载maven提供给我们的模块。
如下勾选Create from archetype,并选中webapp模块。
Next3、groupId和version继承⾃Parent project,这⾥只⽤填写ArtifactId。
Next4、可以使⽤默认的maven配置,本⼈使⽤的是⾃⼰下载的maven和settings.xml⽂件。
如图5、填写模块名称,Next之后等待从⽹路上下载相关组件即可。
6、最终项⽬结构如下图只要熟悉web项⽬结构的,不⼀定要使⽤该⽅法。
按照web项⽬的结构⼿动构建⼀个即可。
idea maven多模块项目搭建 简书
idea maven多模块项目搭建简书在IDEA中使用Maven进行多模块项目搭建的步骤在软件开发过程中,使用多模块项目可以更好地管理和组织代码。
IDEA是一个功能强大的集成开发环境,而Maven是一个优秀的项目构建工具。
本文将介绍如何使用IDEA和Maven来搭建多模块项目。
1. 创建一个Maven项目打开IDEA,选择"File" -> "New" -> "Project",在弹出窗口中选择"Maven",点击"Next"。
在"GroupId"和"ArtifactId"字段中输入项目的唯一标识符,然后点击"Next"。
在"Project location"字段中选择项目保存的路径,点击"Next"。
在"Project SDK"字段中选择项目所使用的Java开发环境,点击"Next"。
在最后一个窗口中,选择项目的类型,点击"Finish"。
2. 添加模块在项目创建完成后,我们需要添加模块。
右键点击项目名称,选择"New" -> "Module",在弹出窗口中选择"Maven",然后点击"Next"。
在"GroupId"和"ArtifactId"字段中输入新模块的唯一标识符,然后点击"Next"。
在"Content root"字段中选择新模块的路径,点击"Next"。
在"Project SDK"字段中选择模块所使用的Java开发环境,点击"Next"。
使用maven创建多模块项目
使用maven创建多模块进销存项目结构该文档结合一个现实的进销存(PSS)项目,对maven的如何创建管理项目结果进行了基本的描述。
阅读该文档需要有一定的项目模块管理的概念,以及基本的maven知识,包括安装、配置等。
基本描述该项目使用典型的三层架构,所以采用了pss-core、pss-model、pss-persist、pss-web四个子项目。
顾名思义,core包含主要的程序代码,model包含实体POJO类,persist持久类(DAO),web包含一些web资源(js、jsp、vm...)。
除web是打war包之外,其他的项目均是打jar包。
项目依赖关系图如下:虚线表示模块依赖2.红色表示继承实现步骤创建项目目录进入“工作空间”目录,创建名为PSS的文件夹,切换至控制台,进入该文件夹。
配置模块生成各个模块该步骤会依次生成项目的各个模块,但是生成的模块并没有创建依赖,只是最简单的并且符合maven要求的项目结构的模块,关于什么是maven的标准项目结构,可以参考maven官方文档,或者《maven权威指南》。
#app模块创建mvn archetype:create-DgroupId=com.pubertersoft.pss.core-DartifactId=pss-core#model模块创建mvn archetype:create-DgroupId=com.pubertersoft.pss.model-DartifactId=pss-model#persist模块创建mvn archetype:create-DgroupId=com.pubertersoft.pss.persist-DartifactId=pss-persist#web模块创建mvn archetype:create-DgroupId=com.pubertersoft.pss.web-DartifactId=pss-web-DpackageName=com.pubertersoft.pss.web-DarchetypeArtifactId=maven-archetype-webapp配置项目模块在PSS根目录下新建一个pom.xml配置文件,加入如下内容:<project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion><groupId>com.pubertersoft.pss</groupId><artifactId>parent</artifactId><packaging>pom</packaging><name>PSS Parent Project</name><version>1-SNAPSHOT</version><modules><module>pss-model</module><module>pss-core</module><module>pss-persist</module><module>pss-web</module></modules><build><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.5</source><target>1.5</target></configuration></plugin></plugins></pluginManagement></build></project>这里需要注意的是modules节点,配置了上一步生成的四个模块。
idea maven多模块项目搭建 简书
idea maven多模块项目搭建简书Idea是一款非常流行的Java集成开发环境(IDE),而Maven是一款强大的项目管理工具。
结合使用Idea和Maven可以快速、高效地搭建多模块项目。
在本文中,我们将介绍如何使用Idea Maven搭建多模块项目,并给出一些实际的示例。
1.创建一个Maven父工程首先,在Idea中创建一个新项目,选择Maven项目模板。
然后,填写项目信息,包括GroupId、ArtifactId和Version等。
2.创建子模块在父工程中右键单击,选择新建Maven模块。
在弹出的对话框中,选择创建一个新的子模块。
3.配置子模块的pom.xml文件在子模块的pom.xml文件中,配置依赖项、插件和其他一些项目相关的配置。
根据项目需求,选择合适的依赖项,并确保版本兼容性。
4.添加依赖关系在父工程的pom.xml文件中,添加子模块的依赖关系。
根据项目需求,选择合适的依赖项,并确保版本兼容性。
示例如下:```xml<modules><module>子模块1</module><module>子模块2</module></modules>```5.构建和运行项目在Idea中,点击项目右上角的绿色运行按钮,即可构建和运行多模块项目。
6.文件结构一个典型的多模块项目的文件结构如下:```- Parent Project(父工程)- pom.xml(父工程的配置文件)- Submodule 1(子模块1)- pom.xml(子模块1的配置文件)- src/main/java- src/main/resources- ...- Submodule 2(子模块2)- pom.xml(子模块2的配置文件)- src/main/java- src/main/resources- ...- ...```7.实际示例下面以一个简单的Web应用为例,来演示如何使用Idea Maven搭建多模块项目。
使用Maven构建多模块项目
使用Maven构建多模块项目在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为domain(域模型层)、dao(数据库访问层)、service(业务逻辑层)、web(表现层),这样分层之后,各个层之间的职责会比较明确,后期维护起来也相对比较容易,今天我们就是使用Maven来构建以上的各个层。
项目结构如下:system-parent|----pom.xml|----system-domain|----pom.xml|----system-dao|----pom.xml|----system-service|----pom.xml|----system-web|----pom.xml一、创建system-parent项目创建system-parent,用来给各个子模块继承。
进入命令行,输入以下命令:mvn archetype:create -DgroupId=me.gacl -DartifactId=system-parent -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false命令执行完成之后可以看到在当前目录(C:\Documents and Settings\Administrator)生成了system-parent目录,里面有一个src目录和一个pom.xml文件,将src文件夹删除,然后修改pom.xml文件,将<packaging>jar</packaging>修改为<packaging>pom</packaging>,pom表示它是一个被继承的模块,1 <project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"2 xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">3 <modelVersion>4.0.0</modelVersion>45 <groupId>me.gacl</groupId>6 <artifactId>system-parent</artifactId>7 <version>1.0-SNAPSHOT</version>8 <packaging>pom</packaging>910 <name>system-parent</name>11 <url></url>1213 <properties>14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>15 </properties>1617 <dependencies>18 <dependency>19 <groupId>junit</groupId>20 <artifactId>junit</artifactId>21 <version>3.8.1</version>22 <scope>test</scope>23 </dependency>24 </dependencies>25 </project>复制代码二、创建sytem-domain模块在命令行进入创建好的system-parent目录,然后执行下列命令:mvn archetype:create -DgroupId=me.gacl -DartifactId=system-domain -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false命令执行完成之后可以看到在system-parent目录中生成了system-domain,里面包含src 目录和pom.xml文件。
maven配置多模块项目pommodules
maven配置多模块项⽬pommodules所有⽤Maven管理的真实的项⽬都应该是分模块的,每个模块都对应着⼀个pom.xml。
它们之间通过继承和聚合(也称作多模块,multi-module)相互关联。
那么,为什么要这么做呢?我们明明在开发⼀个项⽬,划分模块后,导⼊Eclipse变成了N个项⽬,这会带来复杂度,给开发带来不便。
为了解释原因,假设有这样⼀个项⽬,很常见的Web应⽤。
在这个应⽤中,我们分了⼏层:Dao层负责数据库交互,封装了Hibernate交互的类。
Service层处理业务逻辑,放⼀些Service接⼝和实现相关的Bean。
Web层负责与客户端交互,主要有⼀些Structs的Action类。
对应的,在⼀个项⽬中,我们会看到⼀些包名:org.myorg.app.daoorg.myorg.app.serviceorg.myorg.app.weborg.myorg.app.util这样整个项⽬的框架就清晰了,但随着项⽬的进⾏,你可能会遇到如下问题:1. 这个应⽤可能需要有⼀个前台和⼀个后台管理端(web或者swing),你发现⼤部分dao,⼀些service,和⼤部分util是在两个应⽤中可。
这样的问题,你⼀周内遇到了好⼏次。
2. pom.xml中的依赖列表越来越长以重⽤的,但是,由于⽬前只有⼀个项⽬(WAR),你不得不新建⼀个项⽬依赖这个WAR,这变得⾮常的恶⼼,因为在Maven中配置对WAR的依赖远不如依赖JAR那样简单明了,⽽且你根本不需要org.myorg.app.web。
有⼈修改了dao,提交到svn并且不⼩⼼导致build失败了,你在编写service的代码,发现编译不过,只能等那⼈把dao修复了,你才能继续进⾏,很多⼈都在修改,到后来你根本就不清楚哪个依赖是谁需要的,渐渐的,很多不必要的依赖被引⼊。
甚⾄出现了⼀个依赖有多个版本存在。
3. build整个项⽬的时间越来越长,尽管你只是⼀直在web层⼯作,但你不得不build整个项⽬。
Maven创建多模块项目(包括依赖版本号的统一更新)
Maven创建多模块项⽬(包括依赖版本号的统⼀更新)0、多项⽬⼯程的⽂件夹及依赖关系bus-core-api为公共项⽬,app-web-ui依赖bus-core-api,app-desktop-ui依赖bus-core-api1、创建⼀个⽗Maven⼯程mvn archetype:generate -DgroupId=com.jsoft.test -DartifactId=testproject -Dversion=1.0-SNAPSHOT -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=pom-root -DinteractiveMode=false -DarchetypeVersion=RELEAS 注意:此项⽬为pom类型的⼯程,创建好之后只有⼀个pom.xml⽂件,<packaging>类型为pom。
创建好后的pom.xml⽂件内容如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.jsoft.test</groupId><artifactId>testproject</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><name>testproject</name></project>2、创建三个⼦Maven⼯程注意:此时创建的⼯程的⽬录是进去⽗Maven⼯程的⽬录进⾏创建①创建bus-core-api项⽬mvn archetype:generate -DgroupId=com.jsoft.test -DartifactId=bus-core-api -Dversion=1.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DarchetypeVersion=RELEASE②创建app-desktop-ui项⽬mvn archetype:generate -DgroupId=com.jsoft.test -DartifactId=app-desktop-ui -Dversion=1.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DarchetypeVersion=RELEASE③创建app-web-ui项⽬mvn archetype:generate -DgroupId=com.jsoft.test -DartifactId=app-web-ui -Dversion=1.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false -DarchetypeVersion=RELEASE此时创建好项⽬之后,⽗Maven⼯程pom.xml也会跟着改变,⾃动加⼊<Module>节点,如下所⽰:<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.jsoft.test</groupId><artifactId>testproject</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><name>testproject</name><modules><module>bus-core-api</module><module>app-desktop-ui</module><module>app-web-ui</module></modules></project>⽽通过进⼊到⽗Maven⼯程的⽬录创建的⼦Maven⼯程,pom.xml也会做相应的变化,增加了<parent>节点,内容如下:bus-core-api:<?xml version="1.0"?><project xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd" xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><parent><groupId>com.jsoft.test</groupId><artifactId>testproject</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.jsoft.test</groupId><artifactId>bus-core-api</artifactId><version>1.0-SNAPSHOT</version><name>bus-core-api</name><url></url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies></project>app-desktop-ui:<?xml version="1.0"?><project xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd" xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><parent><groupId>com.jsoft.test</groupId><artifactId>testproject</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.jsoft.test</groupId><artifactId>app-desktop-ui</artifactId><version>1.0-SNAPSHOT</version><name>app-desktop-ui</name><url></url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies></project>app-web-ui:<?xml version="1.0"?><project xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd" xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><parent><groupId>com.jsoft.test</groupId><artifactId>testproject</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.jsoft.test</groupId><artifactId>app-web-ui</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>app-web-ui Maven Webapp</name><url></url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies><build><finalName>app-web-ui</finalName></build></project>⽽此时项⽬还没有完⼯,因为bus-core-api为公共项⽬,app-web-ui依赖bus-core-api,app-desktop-ui依赖bus-core-api,所以必须在app-web-ui和app-desktop-ui增加对bus-core-api的依赖引⽤。
idea maven多模块项目搭建 简书
idea maven多模块项目搭建简书Idea Maven多模块项目搭建简书在本文中,将详细介绍如何使用Idea和Maven搭建一个多模块项目,并将其发布到简书。
Idea是一款强大的Java开发工具,而Maven是一个用于构建和管理Java项目的工具。
通过结合使用这两个工具,可以高效地搭建和管理一个复杂的多模块项目。
以下是搭建一个Idea Maven多模块项目的步骤:第一步:安装Idea和Maven首先,确保已经安装了Idea和Maven。
可以从官方网站下载并安装最新版本的Idea和Maven。
安装完成后,打开Idea。
第二步:创建一个Maven项目在Idea的欢迎界面中,选择“Create New Project”,然后选择“Maven”作为项目类型。
在下一步中,可以选择使用Maven的一个快速启动模板或者自定义项目设置。
第三步:配置项目结构在创建项目后,可以在Idea的工具栏中找到“Project Structure”选项。
点击这个选项,可以配置项目的结构和模块。
第四步:创建模块在“Project Structure”中的模块选项卡中,点击“+”按钮添加一个新模块。
可以选择一个Maven模板或者自定义模块设置。
第五步:配置模块依赖在模块创建后,可以在“Dependencies”选项卡中配置模块的依赖关系。
点击“+”按钮添加依赖项,并选择所需的依赖库。
第六步:编写代码在完成上述步骤后,可以开始编写代码了。
每个模块都有自己的源代码目录,可以按照需要在相应的目录下创建Java类。
第七步:构建和测试项目在Idea中,可以使用Maven进行项目构建和测试。
可以在Idea的右侧窗口中找到“Maven Projects”选项卡,并选择“Lifecycle”下的“clean”和“install”来构建和测试项目。
第八步:发布到简书完成项目的开发和测试后,可以将其发布到简书。
首先,需要在简书上创建一个账号,并登录到该账号。
利用intellijidea创建maven多模块项目
利⽤intellijidea创建maven多模块项⽬本⽂通过⼀个例⼦来介绍利⽤maven来构建⼀个多模块的jave项⽬。
开发⼯具:intellij idea。
⼀、项⽬结构multi-module-oject是主⼯程,⾥⾯包含两个模块(Module):1. web-app是应⽤层,⽤于界⾯展⽰,依赖于web-service参的服务。
2. web-service层是服务层,⽤于给app层提供服务。
⼆、构建项⽬2.1 Parent Project新建⼀个空⽩标准maven project(不要选择Create from archetype选项)填写项⽬坐标得到⼀个标准的maven项⽬,因为该项⽬是作为⼀个Parent project存在的,可以直接删除src⽂件夹。
2.2 增加web-app模块(Module)选择从archetype创建(选择webapp选项)groupId和version继承⾃Parent project,这⾥只需要填写artifactId即可。
2.3增加web-service模块⽤同样的⽅法创建web-service模块(不过该模块是⼀个空⽩maven标准项⽬,不要从archetype创建)2.4 得最终项⽬结构2.5 关键⼏点1. Parent project和各个Module拥有独⽴pom⽂件,他们之间的关系后续会专门写⽂章介绍。
2. Parent project⽤于组织不同的Module,不实现逻辑3. Module集成Parent project的groupId和version,Module只需要指定⾃⼰的artifactId即可。
三、添加项⽬依赖上⾯的操作是添加web-app对web-service模块的依赖,完成上述操作后web-Service中public的类已经在web-app模块中可见了。
但是这个时候在app模块使⽤了service模块中的类,通过maven进⾏编译(compile)的时候还是会报错XX找不到(XX为service模块的类),要解决这个问题需要在app的pom中增加对service的依赖:<dependency><groupId>blogs.kmpp</groupId><artifactId>web-service</artifactId><version>1.0-SNAPSHOT</version></dependency>以上,项⽬依赖的添加已经完成四、开始编程4.1 web-service模块编程在web-service模块中增加⼀个Service类(SimpleService.)4.2 web-app模块编程在web-app模块增加⼀个Servlet,并且调⽤web-service模块的SimpleService类的getServiceDescrtion⽅法。
IntelliJIDEA构建maven多模块工程项目(详细多图)
IntelliJIDEA构建maven多模块⼯程项⽬(详细多图)⾷⽤前须知本⽂以a b c 三个模块为例来搭建项⽬,以达到通俗易懂的初衷模块a —– 基模块,就是⼈们常说的parent模块b —– 其他模块都需要使⽤的⼀些⼯具,⽐如时间⼯具,json⼯具等模块c —– 项⽬主要的内容,⼀般为聚合⼯程先简单讲⼀下maven的⼀些特点继承这个可以理解为java中的继承类似,⽗类定义的东西,⼦类如果你想⽤就拿过来⽤就可以;依赖依赖就相当于我们java中的导包,⼆者有着异曲同⼯之妙;你想⽤的东西只需要告诉maven它在哪就可以,它会⾃动帮你找过来给你⽤聚合这个暂时我还没找到java中能与之对应的原型;maven聚合是将多个模块组装在⼀起,相互协调依赖运⾏;创建步骤 (详细多图)1.创建⼀个空项⽬file - new - project ⼀个空的项⽬填写项⽬名称选择要打开项⽬的⽅式2.创建第⼀个模块a新建⼀个模块选择创建⼀个maven模块填写模块基本信息解决创建速度慢设置⼀个属性 archetypeCatalog ,具体原因感兴趣的⾃⾏了了了姐吧finish完成模块创建3.创建第⼆个模块选择继承的⽗⼯程填好路径finish完成b模块创建同 b 完成 c 模块创建4.创建聚合⼯程 c在 c 模块下新建⼀个maven⼯程模块 c1继承 c 模块配置 c1 ⼯程路径同 c1 完成 c2 ⼯程模块创建c2 模块依赖 c1 模块c ⼯程模块依赖 b ⼯程模块最后再说两句这种项⽬结构主要应⽤在⼤型项⽬中,多⼈协作开发,⼩型项⽬或⼈员配置不⾜情况下不建议使⽤;之前因为⼀直没有机会参与⼤型项⽬开发,或是这种分布式项⽬的搭建,⽹上也没有这⽅⾯系统全⾯的说明可能真正⽤到这种架构的不需要⾃⼰动⼿去弄,等着别⼈搭好进去码代码就可以了.所以本⼈也是抱着学习的态度发布这篇⽂章,希望能够帮助⼀些不清楚的同学⼀起学习,⼀起进步.到此这篇关于IntelliJ IDEA 构建maven多模块⼯程项⽬(详细多图)的⽂章就介绍到这了,更多相关IDEA 构建maven多模块内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
idea中创建maven的Javaweb工程并进行配置(图文教程)
idea中创建maven的Javaweb⼯程并进⾏配置(图⽂教程)学完maven后,可以创建maven的javaweb⼯程,在创建完成后还需要⼀些配置,下⾯来说下具体步骤,在这⾥我创建的是⼀个模块,创建web项⽬的⽅式和创建模块⼀样
1.创建⼀个模块,点new-Module
2.选择maven,然后把对勾打上,选⾻架,⼀定要选择第⼆个webapp⾻架,如图
3.设置GroupId和ArtifactId,ArtifactId最好设置的和模块名称⼀样
4.设置maven的相关信息,如图
5.设置模块的名称和存储位置
6.点击完成,当出现红框中的内容的时候表⽰创建成功,第⼀次创建的maven的web⼯程会有点慢,解决⽅法参考:
7.接下来修改pom⽂件,因为maven项⽬并没有jar包,只有jar包的坐标,我们得配置下jar包,把本地仓库中得jar包导进来
8.在pom⽂件中再配置下tomcat7,因为tomcat可能不能⽤,这样⽐较稳
9.配置好了,就可以创建新的servlet了,先补全maven得项⽬结构,即在main⽬录下创建⼀个java⽬录
10.这是java⽬录只是⼀个普通得⽬录,需要将⽬录标记为源码跟⽬录
13.然后可以先创建⼀个包,在包⾥创建servlet了,这是会发现⼀个问题,就是创建的时候没有servlet,解决这个问题请参考:
14.问题解决后就可以创建servlet使⽤了
补充:在这⾥补充下tomcat的运⾏⽅法
总结
以上所述是⼩编给⼤家介绍的idea中创建maven的Javaweb⼯程并进⾏配置(图⽂教程),希望对⼤家有所帮助!。
构建Maven多模块项目的方法
构建Maven多模块项⽬的⽅法⽬录构建Maven多模块项⽬创建⽗模块创建⼦模块:model层创建⼦模块:dao模块创建⼦模块:service层创建⼦模块:web层编译运⾏项⽬Maven相关特性⽗模块的配置⽗模块聚合⼦模块⽗模块统⼀管理依赖包⼦模块在pom.xml中声明⽗模块参考⽂章构建Maven多模块项⽬JavaWeb开发⼀般都会进⾏分层开发,通常分为model,模型层dao,数据访问层service,业务逻辑层web,表现层分层后,各层职责明确,后期维护起来也会容易⼀些。
接下来我们就是使⽤Maven来构建以上各层,即构建⼀个Maven多模块项⽬,项⽬⽬录结构如下所⽰。
创建⽗模块执⾏命令:mvn -B archetype:generate -DgroupId=com.jepcc.app -DartifactId=demo -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4,得到⼀个新项⽬。
接下来作如下处理:删除src⽂件夹修改demo/pom.xml⽂件<packaging>标签在没有指明的情况下默认是jar,这⾥将其修改为pom,表⽰模块是⼀个可以被继承的模块。
创建⼦模块:model层进⼊demo⽬录,执⾏命令:mvn -B archetype:generate -DgroupId=com.jepcc.app -DartifactId=model -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4,在demo⽬录下⽣成了model ⽬录,model⽬录⾥包含了src⽬录和pom.xml⽂件。
且demo/pom.xml⾥⾃动新增了以下内容,<modules><module>model</module></modules>接下来做如下处理:修改model/pom.xml⽂件删除<groupId>com.jepcc.app</groupId>和<version>1.0-SNAPSHOT</version>因为groupId和version会继承⾃⽗模块的groupId和version。
命令行创建多模块的Maven项目(父模块,子模块)
命令行创建多模块的Maven项目(父模块,子模块)我们都知道,我们常常将一个复杂的java应用拆分成多个java子应用。
由于maven的出现,这种拆分就更加容易了,因为我们通过maven可以创建多个关联模块的项目(Multiple Module Projects)。
由一个总的模块,下面包含多个子模块(子模块还可以包含子模块)。
一、通过在Maven命令行创建。
1. 创建父模块(总的POM) - cms-validator使用命令mvn archetype:generate -DgroupId=com.ebay.tools.cms.validator -DartifactId=cms-validator创建一个maven项目,然后修改该项目的pom.xml文件,将package类型改为pom<packaging>pom</packaging>并删除其中的src目录。
2. 创建提供rest service的子模块:validator-rest在父模块的目录下,使用命令mvn archetype:generate -DgroupId=com.ebay.tools.cms.validator.rest -DartifactId=validator-rest创建一个maven(子)项目。
3. 创建一个web子模块: validator-web在父模块的目录下,mvn archetype:generate -DgroupId=com.ebay.tools.cms.validator.web -DartifactId=validator-web -DarchetypeArtifactId=maven-archetype-webapp完成以上3步以后,会在总的pom.xml中已经自动加入:<modules><module>validator-rest</module> <module>validator-web</module> </modules>在各个子模块中也自动的加入了:<parent><artifactId>cms-validator</artifactId><groupId>com.ebay.tools.cms.validator</groupId><version>1.0-SNAPSHOT</version></parent>由于默认情况下子模块继承了总POM的package(pom),这里需要修改子模块的pom的package类型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、eclipse 3.6.1下载地址[eclipse-jee-helios-SR1-win32.zip]
/downloads/packages/eclipse-ide-java-ee-developers/heliossr1
二、插件地址
1、gef插件地址:
/tools/gef/updates/interim/
2、subclipse插件地址:
/update_1.6.x
3、maven2插件地址:
m2eclipse-core Update Site: /sites/m2e
m2eclipse-extras Update Site: /sites/m2e-extras
注意:必须两个插件都安装,不安装extras插件时,点击“run as server”来运行项目时会报错:“the selected did not contain any resources that can run on server maven project”
三、安装时出现问题:
直接在线安装maven2会出现依赖插件找不到的问题,无法安装。
必须先安装gef插件后才能安装m2eclipse-core插件,然而安装m2eclipse-extras插件又依赖subclipse插件。
所以,三个插件的正确的安装顺序是:gef插件-> subclipse插件->m2eclipse插件。
m2eclipse-core插件——依赖——>gef插件
m2eclipse-extras插件——依赖——>subclipse插件
安装完成后,启动eclipse,你将还会看到如下提示:
安装m2eclipse插件后,重启Eclipse老是提示:
Eclipse is running in a JRE, but a JDK is required
Some Maven plugins may not work when importing projects or updating source folders.
-vm配置项必须在–vmargs配置项前,是因为执行到-vmargs配置项已经选择了一个默认的JVM了。
所以在–vmargs前面加上这一句:
-vm
D:/Java/jdk1.6.0_10/bin/javaw.exe
安装结束.
在建立Maven多项目的时候,前提是在Eclipse中安装了,Maven插件,
才能建立Maven项目。
单击右键->选择Project->选择选择Maven Project. 后,单击Next ,下一步。
选择使用默认的命名空间路径,单击Next下一步,
选择maven-archetype-quickstart 选项,单击Next 下一步。
New Maven Project,
输入如下内容,
Group ID,项目唯一ID,
Artifact ID,项目名称,
V ersion ,版本号,
Package ,包名称。
之后,单击Finish按钮。
打开顶尖项目中的pom.xml文件,选择packageing 下拉框中的pom; Ctrl+S保存一下.
Module Name:输入项目的名称。
选择,maven-archetype-quickstart ,选项,建立一个java项目,单击Next按钮。
输入Java 项目,的一些Group Id 组ID,V ersion,版本号,Package 包,之后单击Finish按钮。
接下来,建立一个Web 项目..
选择,maven-archetype-webapp ,此选项后,单击next按钮,下一步。
则输入,Group ID,V ersion。
Package等等。
点击Finish 确认。
一个完整的多项目模块,就建立好了,很简单吧。