码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-07-19 11:02:26      阅读:740      评论:0      收藏:0      [点我收藏+]

标签:

最近写个自己的小项目,牵扯到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项目代码及资源被整合到一起。

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

标签:

原文地址:http://blog.csdn.net/qq_32588349/article/details/51934100

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!