zoukankan      html  css  js  c++  java
  • Java开发小技巧(二):自定义Maven依赖

    前言

    我们在项目开发中经常会将一些通用的类、方法等内容进行打包,打造成我们自己的开发工具包,作为各个项目的依赖来使用。

    一般的做法是将项目导出成Jar包,然后在其它项目中将其导入,看起来很轻松,但是存在一个问题,如果你修改了Jar包的内容,岂不是要每个项目都重新导入,这显然是一种很不智能的做法。

    那我们要怎样避免这种“牵一发而动全身”的效果呢?这里给大家介绍一种灵活的解决方法。

    解决方法

    自定义Maven依赖

    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 arget),然后执行命令:

    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.jianshu.com/p/b6b1ec6b1816。

  • 相关阅读:
    手机web页面调用手机QQ实现在线聊天的效果
    Java EE 6 最终草案暗示了平台的未来发展方向
    NetBeans 时事通讯(刊号 # 77 Oct 21, 2009)
    Java 依赖注射规范(JSR330)正式发布
    NetBeans IDE 6.8 里程碑 2 已经可用!
    Java 依赖注射规范(JSR330)正式发布
    对面向对象和面向过程的一些新理解
    NetBeans 时事通讯(刊号 # 76 Oct 13, 2009)
    Java EE 6 最终草案暗示了平台的未来发展方向
    “当前不会命中断点。源代码与原始版本不同”的问题的有效解决办法
  • 原文地址:https://www.cnblogs.com/zkh101/p/8080843.html
Copyright © 2011-2022 走看看