我们在项目开发中经常会将一些通用的类、方法等内容进行打包,打造成我们自己的开发工具包,作为各个项目的依赖来使用。
一般的做法是将项目导出成 Jar 包,然后在其它项目中将其导入,看起来很轻松,但是存在一个问题,如果你修改了 Jar 包的内容,岂不是要每个项目都重新导入,这显然是一种很不智能的做法。
那我们要怎样避免这种 "牵一发而动全身" 的效果呢?这里给大家介绍一种灵活的解决方法。
Maven 是一个项目管理工具,其中一个重要的组成部分就是依赖管理系统,用来解决项目的各种依赖,与传统的导 Jar 包方式相比,Maven 能按照你定义的依赖描述来自动导入 Maven 本地或远程仓库中各种依赖包,不需要手动的复制粘贴。
1. 首先新建一个基于 Maven 的 Java 工程,我们将其命名为 "project-monitor"
2. 导入各种需要的依赖,包括 spring 的各种依赖,这里还导入了 spring-jdbc 的依赖包用来进行后面的数据源配置测试,pom.xml 文件如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <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>
- <groupId>com.demo</groupId>
- <artifactId>project-monitor</artifactId>
- <version>0.0.1</version>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
- <spring-version>4.3.7.RELEASE</spring-version>
- </properties>
- <dependencies>
- <!-- spring start -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context-support</artifactId>
- <version>${spring-version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-jdbc</artifactId>
- <version>${spring-version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>${spring-version}</version>
- <scope>test</scope>
- </dependency>
- <!-- spring end -->
- <!-- log4j start -->
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.17</version>
- </dependency>
- <!-- log4j end -->
- <!-- mysql start -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>6.0.6</version>
- </dependency>
- <!-- mysql end -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- </dependency>
- </dependencies>
- </project>
3. 定义数据源 bean,spring 上下文文件 project-monitor.xml 如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/beans/spring-context.xsd">
- <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <property name="driverClassName" value="${jdbc.driverClassName}"/>
- <property name="url" value="${jdbc.url}"/>
- <property name="username" value="${jdbc.username}"/>
- <property name="password" value="${jdbc.password}"/>
- </bean>
- </beans>
这里使用 ${jdbc.url} 这种占位符形式进行配置,子项目使用时再对其进行填充使用
4. 项目编译打包配置,修改 pom.xml 文件,添加以下配置节点:
- <build>
- <finalName>${project.artifactId}</finalName>
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.6</source>
- <target>1.6</target>
- <encoding>utf8</encoding>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <configuration>
- <archive>
- <manifest>
- <addClasspath>true</addClasspath>
- <classpathPrefix>jars</classpathPrefix>
- </manifest>
- <manifestEntries>
- <Implementation-Title>project-monitor</Implementation-Title>
- <Implementation-Version>${project.version}</Implementation-Version>
- <Implementation-Vendor>kMacro</Implementation-Vendor>
- <Build-Time>${maven.build.timestamp}</Build-Time>
- </manifestEntries>
- </archive>
- </configuration>
- </plugin>
- </plugins>
- </build>
5. 执行 Maven 编译打包命令,在项目根目录(如:D:\project-monitor)下执行以下命令(需配置 Maven 环境变量):
mvn clean package
6. 将打包后的 Jar 包安装到本地 Maven 仓库中,首先定位到 jar 所在目录(如:D:\project-monitor\target),然后执行命令:
- mvn install: install - file - Dfile = project - monitor.jar - DgroupId = com.demo - DartifactId = project - monitor - Dversion = 0.0.1 - Dpackaging = jar
7. 安装完成
8. 其它工程导入该依赖:
- <dependency>
- <groupId>com.demo</groupId>
- <artifactId>project-monitor</artifactId>
- <version>0.0.1</version>
- </dependency>
9. 项目修改,只需重新执行 5 和 6 的命令即可,子项目不需任何处理
注意:pom.xml 文件并不会被子项目所共享,子项目必须单独导入所有需要的依赖
大功告成,一个通用灵活的自定义 Maven 依赖就开发完成了,这里只是介绍一下 Maven 依赖包的开发过程,之后会详细介绍如何在子项目中使用安装的依赖包。
文章项目源码已发布到 Github: https://github.com/ZKHDEV/MultDependPjo
本文为作者 kMacro
来源: http://www.cnblogs.com/zkh101/p/8080843.html