文档章节

maven多web合并项目

zkool
 zkool
发布于 2016/11/23 14:32
字数 1377
阅读 156
收藏 2
点赞 0
评论 0

实际情况:基于开源作者开源的web项目,扩展开发自己的业务功能,又不想跟原项目混在一起开发,即要实现开源web项目与自己的扩展web项目合并部署且自己的web项目依赖开源的web项目,经网上查询资料和实际测试如下方案可行。

开源的web项目pom: <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> 下的<configuration>中添加下面两行

<!--注意增加这两行,在打包时相关的类会被独立打成jar add by kool.zhao 2016-09-04 -->

<attachClasses>true</attachClasses> <classesClassifier>api</classesClassifier>

自己的web项目pom: 添加依赖:分别依赖开源web项目的war和jar <dependency> <groupId>com.thinkgem.jeesite</groupId> <artifactId>jeesite</artifactId> <version>1.2.7</version> <type>war</type> </dependency>

<dependency>
	<groupId>com.thinkgem.jeesite</groupId>
	<artifactId>jeesite</artifactId>
	<version>1.2.7</version>
	<type>jar</type>
	<scope>compile</scope>
	<classifier>api</classifier>
</dependency>	

<build> <finalName>mysite</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <!-- 测试合并web模块项目 --> <overlays> <overlay> <groupId>com.thinkgem.jeesite</groupId> <artifactId>jeesite</artifactId> </overlay> </overlays> </configuration> </plugin> </plugins> </build>

参考: http://www.tuicool.com/articles/ArE3iaA http://www.cnblogs.com/silentjesse/p/5071965.html

maven多web合并项目 多web项目合并,主要是我在网上找到的资料都不是我最终想要的效果,所以这里就介绍下我最终使用的方案,网上有很多方案都是介绍用caro插件,我到现在也不明白为什么要使用这个插件。 maven的多web模块maven-war-plugin插件的overlays属性来处理,最终主web项目pom.xml代码如下

<build> <finalName>bpmcenter</finalName> <plugins> <!-- 合并多个war --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <packagingExcludes>WEB-INF/web.xml</packagingExcludes> <overlays> <overlay> <groupId>com.founder.fix.fixflow</groupId> <artifactId>fixflow-webapp-taskcenter</artifactId> </overlay> </overlays> </configuration> </plugin> </plugins> </build> 这里使用到了maven-war-plugin,用overlay属性已经足够将多web合并了,只是用的过程中需要注意以下几点: 1. 被合并的子web项目packaging属性必须是war 2. 被合并的子web项目,必须在主项目中添加依赖关系。 3. 被合并的子web项目中,如果没有web.xml,则需要在pom.xml中声明 <build> <finalName>fixflow-webapp-editor</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build>

    做完以上几点,多web项目合并就基本上做完了,运行mvn install就会发现打出的war包中已经存在了其他子模块的项目。
   多web项目在eclipse+tomcat环境下部署调试
    在eclipse里面使用,其实更简单,只是网上的说法太复杂了而已,对于习惯了tomcat开发的用户来说。
    对于maven项目,一个环境到另一个环境应该只有pom.xml文件和src文件夹就够了,其他都是用户根据自己的环境来做的。
  1. 打开eclipse,修改本地maven仓库地址,导入maven项目,等待构建结束。
  2. 创建server,打开window-prefrences-server-runTime Environment-new ....选择tomcat路径,jdk信息,这一步和原来完全一样。
  3. 打开server视图,new server,这里选中刚才创建的tomcat,点击next,这步只需要主web项目添加进来即可。
  4. 双击创建的server,选择将项目发布到tomcat的webapps目录下,点击pushlish,完成。 再去tomcat目录,发现已经将合并后的web发布到对应目录下了。 引用的其他Java项目已经被打包成jar发布到lib下了,不过你可以打个断点试试,依然可以调试,修改一段代码,发现热部署也是可以的,这样就和原来的开发习惯完全一样了。 细心的用户会发现,其实这完全和我们原来的构建,部署方式完全一样,是的,maven没有那么复杂,m2eclipse maven plugin已经帮我们做好了太多的事情,maven只会让我们项目之间的迁移更方便,更简洁,这也是我喜欢上maven的重要原因。 我是一个绝对的maven新手,上面的文章用的也只是maven的皮毛而已,maven更多的构建功能还需要深入去研究,上面文章只是想告诉那些想尝试maven的新手,其实maven不但对代码管理带来了很大的方便,而且完全可以不改变我们原有的开发习惯。所以,尽情的拥抱maven吧!

Maven支撑下的War应用依赖另外一个WAR应用的解决方案 最近在做项目中,用Maven管理项目间的依赖关系,遇到一个问题,快折腾死了,不过初步试出来一种解决方案。在此把问题及解决方案描述一下,以资共享。 问题描述:有两个项目A和B,Dynamic Web Project。依赖关系是,B-->A,一种方式是利用maven-war-plugin的Overlay机制(例子可参见官网),但这种解决方案默认是将两个Web应用的资源进行合并,相关的class都会被复制到WEB-INF/classes下面,相关的JSP等资源也合并到一起。我的要求是A的class被独立打包成一个jar,在发布到应用服务器后存在于B应用的WEB-INF/lib下面,A应用的其他资源都不要。 处理思路: 一、A应用的POM处理 <?xml version="1.0" encoding="UTF-8"?> <project ......"> <modelVersion>4.0.0</modelVersion> <groupId>com.xxx</groupId> <version>0.0.1-SNAPSHOT</version> <name>A-web</name> <artifactId>A-web</artifactId> <packaging>war</packaging>

<build>

<plugins>

        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
                <!--注意增加这两行,在打包时相关的类会被独立打成jar-->
<attachClasses>true</attachClasses>
<classesClassifier>api</classesClassifier>            
        </configuration>
        <version>2.3</version>
        <executions>
        </executions>
        </plugin>

</plugins> </build> </project>

打包完成后,包含A-web.war和a-web-api.jar及其他文件。

二、B应用的POM处理

<?xml version="1.0" encoding="UTF-8"?>

<project ...........> <modelVersion>4.0.0</modelVersion> <groupId>com.xxx</groupId> <version>0.0.1-SNAPSHOT</version> <name>B</name> <artifactId>B</artifactId> <packaging>war</packaging>

<dependencies> <dependency> <groupId>com.xxx</groupId> <artifactId>A-web</artifactId> <version>0.0.1-SNAPSHOT</version> <type>jar</type> <scope>compile</scope> <classifier>api</classifier> </dependency> </dependencies>

</project> 注意以上的依赖中的type属性为jar,而不是默认的war。classifier的值api与A中的classesClassifier的值api要一致。

© 著作权归作者所有

共有 人打赏支持
zkool

zkool

粉丝 48
博文 62
码字总数 17604
作品 0
海淀
程序员
【Maven3教程】Maven多工程、多模块

项目工程拆分原则? 功能分层拆分、业务功能拆分?下面一个电商项目(Jmall)为例: 功能分层拆分 按照项目功能分层,分为common(java工程)、dao(java工程)、service(java工程)、web(...

Auhgnahz
2016/08/01
120
1
使用maven warpath插件合并多module的war包

使用maven warpath插件合并多module的war包 现在java 项目一般使用maven、gradle等工具来管理jar包、打包、发布。如果一个项目有很多模块,那般是分成多个module,主目录有个parent,负责包含...

youthflies
2014/04/29
0
0
鏖战八方开源管理系统--Battcn

Battcn,是一个管理系统。具有单点登录、Web 管理和任务调度等功能。 技术选型 基础框架 Spring 4.3,Spring MVC 4.3,Mybatis3.3.8。如果需要学习以及使用 battcn,首先要对 maven,redis,...

Levin丶枫过无痕
2016/12/21
3.5K
0
maven cargo 插件问题,求解!

使用maven的cargo插件合并war包之后,由于是多个web项目合并,那修改某个项目后怎么热部署到服务器上,否则在开发阶段很浪费时间的呀,请大拿帮忙分析下。

dcz1001
2015/08/18
104
0
Maven使用cargo合并war包后,修改文件后如何热部署到服务器,方便开发调试

问下博主强人:使用maven的cargo插件合并war包之后,由于是多个web项目合并,那修改某个项目后怎么热部署到服务器上,否则在开发阶段很浪费时间的呀,请大拿帮忙分析下。

dcz1001
2015/08/11
353
0
maven按业务分模块的话, 是怎么配置的?

预计的项目结构是: |- proj-parent |- proj-base |- proj-bd |- proj-cms |- proj-sale proj-base是整个项目基础平台, 打包war后可以独立跑 以上每个模块都会有自己的java代码和Web资源(j...

东方星痕
2016/05/11
717
3
使用Maven 压缩、合并前端静态资源

先来看看工程结构: project └─main ├─Java └─webapp ├─app │ │ index.html │ │ │ ├─css │ │ style.css │ │ │ └─js │ app1.js │ app2.js │ jQuery-1.9.1.min.js │...

郏高阳
2016/05/11
1K
0
Springboot Maven 多war 合并打包

Maven Project : wow-app Maven Module: wow-framework(jar) Maven Module: wow-system(war) Maven Module: wow-web(war) 现在使用wow-web作为主Web应用进行打包,并部署到Tomcat。尝试......

Zeroes
03/20
0
0
Java开发小技巧(三):Maven多工程依赖项目

Maven多工程依赖项目开发流程 前言 本篇文章基于Java开发小技巧(二):自定义Maven依赖中创建的父工程实现,运用我们自定义的依赖包进行多工程依赖项目的开发。 下面以多可执行Jar包项目的开...

kMacro
2017/12/22
0
0
Maven war包相互依赖

假设有两个war包:A和B。A又依赖于B。根据Java规范,classpath不能指定WAR文件。这就意味着在编译时,A项目无法访问B项目中定义的类,所以在A项目中,我们不能像常规类组件那样扩展或使用B定...

litterMo
2016/01/28
616
5

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java基础——异常

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 异常处理: 可以挖很多个陷阱,但是不要都是一样...

凯哥学堂
28分钟前
0
0
180723-Quick-Task 动态脚本支持框架之结构设计篇

文章链接:https://liuyueyi.github.io/hexblog/2018/07/23/180723-Quick-Task-动态脚本支持框架之结构设计篇/ Quick-Task 动态脚本支持框架之结构设计篇 相关博文: 180702-QuickTask动态脚本...

小灰灰Blog
32分钟前
0
0
SBT 常用开发技巧

SBT 一直以来都是 Scala 开发者不可言说的痛,最主要的原因就是官方文档维护质量较差,没有经过系统的、循序渐进式的整理,导致初学者入门门槛较高。虽然也有其它构建工具可以选择(例如 Mill...

joymufeng
36分钟前
0
0
HBase in Practice - 性能、监控及问题解决

李钰(社区ID:Yu Li),阿里巴巴计算平台事业部高级技术专家,HBase开源社区PMC&committer。开源技术爱好者,主要关注分布式系统设计、大数据基础平台建设等领域。连续4年基于HBase/HDFS设计和...

中国HBase技术社区
37分钟前
1
0
ES18-JAVA API 批量操作

1.批量查询 Multi Get API public static void multiGet() {// 批量查询MultiGetResponse response = getClient().prepareMultiGet().add("my_person", "my_index", "1")// 查......

贾峰uk
42分钟前
0
0
SpringBoot2.0使用health

1,引入actuator <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency> 2,application.properties ......

暗中观察
49分钟前
0
0
阿里巴巴Java开发规约

###编程规约 命名风格 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。...

简心
53分钟前
0
0
如何用TypeScript来创建一个简单的Web应用

转载地址 如何用TypeScript来创建一个简单的Web应用 安装TypeScript 获取TypeScript工具的方式: 通过npm(Node.js包管理器) npm install -g typescript 构建你的第一个TypeScript文件 创建...

durban
58分钟前
0
0
分享好友,朋友圈自定义分享链接无效

这个问题是微信6.5.6版本以后,修改了分享规则:分享的连接必须在公众号后台设定的js安全域名内

LM_Mike
今天
0
0
2018年7月23日课程

一、LVS-DR介绍 director分配请求到不同的real server。real server 处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。负载均衡器仅处理一半的连接,避免了...

人在艹木中
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部