`
chang_ytao
  • 浏览: 27262 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

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要一致。

三、运行环境
    1、Eclipse4.2
    2、Maven3.X
    3、m2eclipse插件
分享到:
评论

相关推荐

    关于项目、产品maven依赖问题

    Maven是一个流行的构建管理和依赖管理工具,广泛应用于Java项目。在项目开发中,Maven的POM(Project Object Model)文件是核心配置文件,用于定义项目依赖、构建过程和其他元数据。然而,当多个项目或产品之间存在...

    maven+spring简单实例

    而Spring框架则是一个全面的企业级应用开发框架,提供了从数据访问到事务管理,再到Web应用的一系列解决方案。 在“maven+spring简单实例”中,我们主要探讨如何结合这两个强大的工具来创建一个简单的Java应用。...

    maven 整合ssh之一

    SSH是一套强大的Java Web应用程序开发解决方案,可以帮助开发者快速构建高效、可维护的Web应用。 【Maven】 Maven是一个项目管理和综合工具,它通过读取项目配置信息(如pom.xml文件)来管理项目的构建、报告和文档...

    apache-maven-3.3.3.zip

    Apache Maven 是一个强大的Java项目管理和综合工具,它...无论是小型项目还是大型企业级应用,Maven都能提供高效且可靠的解决方案。通过深入理解和熟练运用Maven,开发者可以更专注于编写代码,而不是担心构建问题。

    Maven常见问题解答

    要解决这个问题,需要在`pom.xml`中确保`&lt;project&gt;`下的`&lt;packaging&gt;`标签设置为`war`,并且在`&lt;build&gt;`的`&lt;finalName&gt;`指定正确的应用名。此外,检查`&lt;build&gt;&lt;plugins&gt;&lt;plugin&gt;&lt;groupId&gt;org.apache.tomcat.maven...

    apache-maven-3.6.0.rar

    总的来说,Apache Maven 3.6.0 提供了一整套解决方案来管理Java项目的构建、依赖和生命周期。通过正确配置 `settings.xml` 文件,开发者可以优化依赖库的下载,提高构建效率。同时,Maven的标准化和自动化特性使得...

    Maven的简单使用

    Nexus是一款流行的Maven私服解决方案,它不仅可以作为Maven仓库,还可以支持其他类型的仓库,如npm、docker等。 #### Nexus私服环境搭建 搭建Nexus私服需要完成以下步骤: 1. 下载并安装Nexus服务。 2. 配置Nexus,...

    myeclipse10系列导出war包报错的解决方案

    本文将深入探讨这个问题的成因,并提供一系列的解决方案,帮助开发者顺利解决问题。 首先,我们要理解什么是WAR(Web ARchive)包。WAR文件是Java Web应用程序的标准打包格式,它包含了Servlet、JSP、静态资源以及...

    Maven3.8.1.rar免费

    总结,Maven 3.8.1作为一款强大的Java项目管理工具,提供了一整套解决方案,从项目的初始化到部署,大大简化了开发流程。了解并掌握Maven的使用,对于提升开发效率和团队协作至关重要。通过正确安装和配置Maven,你...

    Maven Web基础搭建示例

    Maven是一款强大的项目管理和依赖管理工具,广泛应用于Java开发领域。在构建Web项目时,Maven能够自动化处理构建过程,包括编译、测试、打包、部署等步骤,极大地提高了开发效率。本示例将详细介绍如何使用Maven搭建...

    maven常见问题及解决办法

    本文将针对几个常见的Maven问题及其解决方法进行详细解析。 #### 问题1:依赖解析失败 **错误信息示例**: ``` [ERROR] Failed to execute goal on project biz_zhuhai: Could not resolve dependencies for ...

    j2ee maven 结合gulp构建工具构建 war 自动刷新浏览器缓存

    在J2EE环境中,应用通常被打包成WAR(Web Application Archive)文件,这是一个标准的Java Web应用归档格式,包含了运行在Web服务器上的所有资源,如HTML、CSS、JavaScript、Servlets、JSP等。 Maven是Apache组织...

    Spring+Maven+sockjs项目

    综上所述,这个项目展示了如何利用Spring、Maven和sockjs在老版本浏览器中实现WebSocket通信,提供了一种高效、兼容的实时交互解决方案。对于开发者来说,理解和掌握这些技术对构建现代Web应用至关重要。

    使用Maven整合ssm

    Maven通过POM(项目对象模型)来描述项目,POM是一个XML文件(通常命名为pom.xml),包含了项目的配置信息,包括项目依赖、构建过程、插件配置等。配置Maven环境需要下载Maven安装包并设置环境变量,如`MAVEN_HOME`...

    apache-maven-3.3.9安装包

    3. **社区支持**: Maven有庞大的用户群体和丰富的插件生态系统,问题解决方案易于查找。 4. **跨平台**: Maven可在Windows、Linux、Mac OS等不同操作系统上运行。 通过理解Maven的核心概念和操作,开发者可以更...

    maven3.5.2

    Maven 3.5.2 作为Maven的一个稳定版本,为Java开发者提供了高效、可靠的项目管理和构建解决方案。通过规范化的项目结构和自动化处理,Maven极大地减少了构建和维护大型项目的工作量,是现代Java开发不可或缺的工具之...

    maven本地仓库

    Maven使用一种基于坐标(groupId、artifactId、version)的系统来管理这些依赖,使得开发者可以轻松地引用并下载所需的库。下面将详细介绍Maven本地仓库的工作原理、配置以及其在开发过程中的作用。 ### Maven仓库...

    cxf spring maven 实例

    本实例将展示如何利用这三者来搭建一个完整的Web服务解决方案。 【描述】"cxf spring maven 实例 webservice"强调了这个示例的重点在于创建Web服务。Web服务是一种通过网络进行通信的应用程序,通常基于开放标准如...

    MyEclipe部署Maven详细

    在IT行业中,Maven是一个广泛使用的构建自动化工具,主要用于Java项目的构建、管理和依赖管理。它通过使用一个项目对象模型(Project Object Model,POM)来描述项目,并利用插件执行构建任务。MyEclipse是一款集成...

Global site tag (gtag.js) - Google Analytics