Maven工程聚合,多个Java工程、web工程聚合

最近写个自己的小项目,牵扯到maven工程聚合问题,网上看了大量资料研究了下,成功了,按照自己的理解简单粗暴的记录下。。。

一、模块结构

粗略画了个草图表示下现有模块之间的关系

二、模块作用及配置文件

  • shiro

提供shiro框架所需的jar包及shiro框架可以共用的相关代码

pom略,仅仅为shiro相关jar包配置

  • ssm

提供ssm框架所需的jar包及与ssm框架相关的可以共用的相关代码

pom略,仅仅为ssm框架相关所需jar包配置

  • tool

工具模块,提供一些工具代码。

pom不配置

  • shiroproject

shiro权限模块,可以独自运行,提供基础的对权限表的增删改查功能及页面展示功能。被其他工程整合后,这些基础功能可以直接使用。

pom

<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>
        //父工程相对路径
        <relativePath>../bdpb-aggregator</relativePath>
        <groupId>org.bc.bdpb</groupId>
        <artifactId>bdpb-aggregator</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent> -->

    <modelVersion>4.0.0</modelVersion>
    <groupId>org.bc.shiro</groupId>
    <artifactId>shiroproject</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>shiroproject Maven Webapp</name>
    <url>http://maven.apache.org</url>

    <dependencies>
        <!-- 依赖的子模块 -->
        <dependency>
            <groupId>org.bc.frame</groupId>
            <artifactId>shiro</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>shiroproject</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <!--将src/main/java下资源文件打包,
                主要是为了编译时将非resources目录下MyBatis的Mapper文件打包 -->
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <!-- 是否替换资源中的属性 -->
                <filtering>false</filtering>
            </resource>
            <resource>
                <!--将src/main/resources下资源文件打包 -->
                <directory>src/main/resources</directory>
                <!-- <includes> <include>**/*.properties</include> <include>**/*.xml</include>
                    </includes> <filtering>true</filtering> -->
            </resource>
        </resources>
    </build>
</project>
  • bdpb-sys-web

项目系统模块,依赖于shiro权限模块,提供项目系统方面的功能及整个项目的权限管理。

pom大致同shiroproject模块略

  • bdpb-business-web

项目业务模块,项目的核心功能模块。

pom大致同shiroproject模块略

  • bdpb-web

仅用于整个web模块,被整合的模块的代码及配置文件会整合进本模块,如果有同名的文件会被本模块覆盖,因此本模块可以放置整个项目的全局配置文件。

pom

<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>
        <groupId>org.bc.bdpb</groupId>
        <artifactId>bdpb-aggregator</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../bdpb-aggregator</relativePath>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <artifactId>bdpb-web</artifactId>
    <packaging>war</packaging>

    <!-- 合并依赖的war -->
    <dependencies>
        <dependency>
            <groupId>org.bc.shiro</groupId>
            <artifactId>shiroproject</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <type>war</type>
        </dependency>
        <dependency>
            <groupId>org.bc.bdpb</groupId>
            <artifactId>bdpb-sys-web</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <type>war</type>
        </dependency>
        <dependency>
            <groupId>org.bc.bdpb</groupId>
            <artifactId>bdpb-business-web</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <type>war</type>
        </dependency>
    </dependencies>

    <build>
        <finalName>bdpb-web</finalName>
        <plugins>
            <!-- 合并多个war,必须先配置要合并的war项目为依赖项目 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <packagingExcludes>WEB-INF/web.xml</packagingExcludes>
                    <overlays>
                        <overlay>
                            <groupId>org.bc.shiro</groupId>
                            <artifactId>shiroproject</artifactId>
                        </overlay>
                        <overlay>
                            <groupId>org.bc.bdpb</groupId>
                            <artifactId>bdpb-sys-web</artifactId>
                        </overlay>
                        <overlay>
                            <groupId>org.bc.bdpb</groupId>
                            <artifactId>bdpb-business-web</artifactId>
                        </overlay>
                    </overlays>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
  • bdpb-aggregator

聚合工程,本项目所有工程的父工程,可以仅仅有一个pom配置文件。

pom

<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>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <groupId>org.bc.bdpb</groupId>
    <artifactId>bdpb-aggregator</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <!-- 待聚合模块 -->
    <modules>
        <!-- 子模块相对路径 -->
        <module>../ssm</module>
        <module>../shiro</module>
        <module>../tool</module>
        <module>../shiroproject Maven Webapp</module>
        <module>../bdpb-web Maven Webapp</module>
        <module>../bdpb-sys-web Maven Webapp</module>
        <module>../bdpb-business-web Maven Webapp</module>
    </modules>

    <name>bdpb-aggregator</name>
    <url>http://maven.apache.org</url>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>2.6</version>
                    <configuration>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.5.1</version>
                    <configuration>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

项目配置过程中问题

  • 项目报错

右键更新下项目,如果依赖的项目代码发生变动也要更新下。

执行整合

打开cmd进入聚合项目目录执行mvn install命令进行项目聚合,然后在maven仓库找到聚合后的项目,打开war包会发现依赖的java项目被打成jar包放在lib下,而多个web项目代码及资源被整合到一起。

时间: 2024-08-06 22:26:30

Maven工程聚合,多个Java工程、web工程聚合的相关文章

Maven详解(七)------ 创建Web工程以及插件原理

1.什么是 Maven 插件? 上一篇博客我们讲了 Maven 的生命周期,我们知道 Maven 的核心是生命周期,生命周期指定了 Maven 命令执行的流程顺序.但是真正实现流程的工程是由插件来完成的. 我们也可以说 Maven 是一个执行插件的框架,每一个任务实际上都是有插件来完成.进一步说每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标,例如maven-compiler-plugin的compile目标用来编译位于src/main/java/目录下的主源码,testCo

使用maven的插件(tomcat)启动web工程方法

前言:现在很多公司的web项目都是使用SpringBoot来搭建的,但是有一个国产开源框架JFinal(快速开发框架)使用的人数慢慢也变多了,对于集中式开发的小项目,使用JFinal框架很快捷(真的).基于JFinal框架,有一个EOVA系统平台,使用起来也很方便.好像跑偏了,略略······!因为SpringBoot集成了Tomcat和Jetty ,所以项目很容易启动,而对于使用JFinal框架的项目呢,其实就需要自己启动第三方web容器(Tomcat),使用maven插件就可以实现. ---

eclipse+maven+tomcat构建web工程

我们要利用Maven构建一个web应用,开发环境为eclipse+tomcat.构建过程如下: 1.工具准备 eclipse:版本为eclipse 4.2(Juno Service),maven插件的安装与配置参见"m2eclipse安装与配置" tomcat:版本为apache-tomcat-6.0.37(即tomcat6.x系列,本文安装在D:\work\tomcat6\apache-tomcat-6.0.37-maven) 2.建立web应用 我们使用eclipse建立maven

多工程:基于Maven的SSM(Spring,SpringMvc,Mybatis)整合的web工程(中)

上篇用了单工程创建了SSM整合的web工程(http://www.cnblogs.com/yuanjava/p/6748956.html),这次我们把上篇的单工程改造成为多模块工程 一:创建对应的多工程 首先原工程有对应的包如下 因为原单工程是 contoller 调用 service ,service 调用 mapper ,mapper 调用pojo 因此把对应的 service  mapper  pojo 分别拆分出去当做模块  然后把utils公用的抽出去当做common模块 最后创建出来

java ,js获取web工程路径

一.java获取web工程路径 1),在servlet可以用一下方法取得: request.getRealPath(“/”) 例如:filepach = request.getRealPath(“/”) ”//upload//”; 2),不从jsp,或servlet中获取,只从普通java类中获取: String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); SAXReader()

Myeclipse更改web工程的项目名

在java的web工程中,我们想更改项目名,常常发现改完项目名之后部署在服务器的名字还是原来的项目名称,这时我们需要做的是:项目名右键--->Properties-->MyEclipse-->Web-->WebContext root,就可以更改成功了.

IntellJ IDEA导入web工程及配置详解

IntellJ IDEA(后面简称idea)是一款功能强大的开发工具,很多程序员已经弃用Eclipse,转而使用idea.这一篇我们来说说idea导入web工程及后续配置. 1.将web工程从SVN或Git上下载到本地目录,这里用test工程为例. 2.打开idea,点击菜单File-->New-->Project,由于是web工程,所以选择Java Enterprise,再配置好JDK,web容器,点击next. 3.直接点击next(无需按模板创建工程). 4.选择web工程test所在目

Myeclipse的web工程和Eclipse互相转换

eclipse的web工程转myeclipse的web工程1.原eclipse工程叫netschool 2.在myeclipse中新建一个工程叫netschool 并在新建的时修改 web root folder为WebContent 3.备份在myeclipse新建的netschool工程下的.classpath 和.mymetadata和.project以及.myeclipse文件夹 4.删除在myeclipse新建的netschool工程 5.通过svn 或cvs checkout 原ec

于Heroku平台部署maven webapp(java web)工程

眼下,需要Heroku上述部署java web工程,该项目必须使用maven管理 一:新maven webapp工程 编者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.o

使用 maven 创建 java web 工程

本文主要讲述使用 maven 命令行的形式来创建  java web 工程 开发环境 jdk 1.7 maven 3.5.0 spring 3.2 tomcat 7 eclipse Mars Release (4.5.0) 1.  maven 来构建 java web 骨架 mvn archetype:generate -DgroupId=com.reycg -DartifactId=MVC-HelloWorld -DarchetypeArtifactId=maven-archetype-web