Java開發小技巧(二):自定義Maven依賴
我們在專案開發中經常會將一些通用的類、方法等內容進行打包,打造成我們自己的開發工具包,作為各個專案的依賴來使用。
思路
一般的做法是將專案匯出成Jar包,然後在其它專案中將其匯入,看起來很輕鬆,但是存在一個問題,如果你修改了Jar包的內容,豈不是要每個專案都重新匯入,這顯然是一種很不智慧的做法。
那我們要怎樣避免這種“牽一髮而動全身”的效果呢?這裡給大家介紹一種靈活的解決方法。
解決方法
自定義Maven依賴
Maven是一個專案管理工具,其中一個重要的組成部分就是依賴管理系統,用來解決專案的各種依賴,與傳統的導Jar包方式相比,Maven能按照你定義的依賴描述來自動匯入Maven本地或遠端倉庫中各種依賴包,不需要手動的複製貼上。
實現過程
1.首先新建一個基於Maven的Java工程,我們將其命名為“project-monitor”
2.匯入各種需要的依賴,包括spring的各種依賴,這裡還匯入了spring-jdbc
的依賴包用來進行後面的資料來源配置測試,pom.xml
檔案如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
<?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
如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?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
檔案,新增以下配置節點:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<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環境變數):
1 |
mvn clean package |
6.將打包後的Jar包安裝到本地Maven倉庫中,首先定位到jar所在目錄(如:D:\project-monitor\target),然後執行命令:
1 |
mvn install:install-file -Dfile=project-monitor.jar -DgroupId=com.demo -DartifactId=project-monitor -Dversion=0.0.1 -Dpackaging=jar |
7.安裝完成 8.其它工程匯入該依賴:
1 2 3 4 5 |
<dependency> <groupId>com.demo</groupId> <artifactId>project-monitor</artifactId> <version>0.0.1</version> </dependency> |
9.專案修改,只需重新執行5和6的命令即可,子專案不需任何處理
注意:pom.xml檔案並不會被子專案所共享,子專案必須單獨匯入所有需要的依賴