标签:
最近写个自己的小项目,牵扯到maven工程聚合问题,网上看了大量资料研究了下,成功了,按照自己的理解简单粗暴的记录下。。。
粗略画了个草图表示下现有模块之间的关系
提供shiro框架所需的jar包及shiro框架可以共用的相关代码
pom略,仅仅为shiro相关jar包配置
提供ssm框架所需的jar包及与ssm框架相关的可以共用的相关代码
pom略,仅仅为ssm框架相关所需jar包配置
工具模块,提供一些工具代码。
pom不配置
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>
项目系统模块,依赖于shiro权限模块,提供项目系统方面的功能及整个项目的权限管理。
pom大致同shiroproject模块略
项目业务模块,项目的核心功能模块。
pom大致同shiroproject模块略
仅用于整个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>
聚合工程,本项目所有工程的父工程,可以仅仅有一个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项目代码及资源被整合到一起。
标签:
原文地址:http://blog.csdn.net/qq_32588349/article/details/51934100