Maven-jar的生成和依赖(解决跨服务映射文件的问题)

来源:互联网 发布:奥迪a6l矩阵式led大灯 编辑:程序博客网 时间:2024/06/05 15:11

Maven生成jar的方式:

<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.ching</groupId>    <artifactId>springmvc</artifactId>    <version>0.0.1-SNAPSHOT</version>    <packaging>jar</packaging>    <name>springmvc</name>    <url>http://maven.apache.org</url><!--指定下载依赖包地址(此处为本人在本地搭建的私服地址)--><repositories>    <repository>        <id>central</id>        <name>Ching Repository</name>        <url>http://127.0.0.1:8080/nexus/content/groups/public/</url>    </repository><repositories>    <properties>        <spring.version>4.0.8.RELEASE</spring.version>            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>            <jdk.version>1.7</jdk.version>    </properties>    <dependencies>        <dependency>                <groupId>org.springframework</groupId>                <artifactId>spring-beans</artifactId>                <version>${spring.version}</version>        </dependency>        ......    </dependencies><!--编译打包配置--><build>        <finalName>springmvc</finalName>        <!--指定打包的资源文件路径,本地测试必须注释掉<excludes>(否则编译会排除如下资源)-->        <resources>            <resource>                <directory>src/main/resources</directory>                <excludes>                <!--资源文件只保留存放mybatis dao.xml目录文件-->                    <!--<exclude>mappings/</exclude>-->                    <exclude>setting/</exclude>                    <exclude>mybatis/</exclude>                    <exclude>hive.properties</exclude>                    <exclude>log4j.properties</exclude>                    <exclude>spring-context.xml</exclude>                </excludes>            </resource>        </resources>        <plugins>            <!--一跳过测试-->            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-surefire-plugin</artifactId>                <version>2.18.1</version>                <configuration>                    <skipTests>true</skipTests>                </configuration>            </plugin>            <!-- 配置编译插件,制定jdk版本 -->            <plugin>                <artifactId>maven-compiler-plugin</artifactId>                <version>3.0</version>                <configuration>                    <source>${jdk.version}</source>                    <target>${jdk.version}</target>                    <encoding>${project.build.sourceEncoding}</encoding>                </configuration>            </plugin>            <!-- 配置打jar包插件 -->            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-jar-plugin</artifactId>                <version>2.4</version>                <configuration>                    <archive>                        <manifest>                            <!-- 必须有一下配置,否则spring 扫描不到jar包中的注入定义-->                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>                        </manifest>                    </archive>                </configuration>            </plugin>            <!-- 配置resource插件,设定所有配置文件字符集为UTF-8 -->            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-resources-plugin</artifactId>                <version>2.6</version>                <configuration>                    <encoding>${project.build.sourceEncoding}</encoding>                </configuration>            </plugin>        </plugins>    </build><!--指定生成的jar上传地址(此处为本人在本地搭建的私服地址)--><distributionManagement>    <repository>        <id>releases</id>        <name>Ching Releases</name>        <url>http://127.0.0.1:8080/nexus/content/repositories/releases/</url>    </repository>    <snapshotRepository>        <id>snapshots</id>        <name>Ching Snapshots</name>        <url>http://127.0.0.1:8080/nexus/content/repositories/snapshots/</url>    </snapshotRepository></distributionManagement></project>    

利用intellij idea的 maven工具 执行jar生成,顺序如下:

这里写图片描述

看到这时候,你会很奇怪的问,小编你到底想干嘛呢

我想表达,很多时候我们将项目划分为很多模块,包括底层服务模块,业务处理模块,视图处理模块

以上生成jar是底层服务模块,主要存放一些service层业务,也就是数据表的操作,就所谓的增删查改

ORM用的是mybatis,资源文件mapping被编译并包含在jar里面

到底这个jar包有什么作用呢?
这一个底层服务jar将可以应用到你的所有项目当中
假设现在里面存放的是用户基础服务,当你的项目要做用户模块
直接引用这个jar,不用再重复做同样的操作数据库的代码

就是所谓的 功能组件化

ok

maven依赖jar:

<!--新项目引用刚刚生成的jar,此处省略了其他配置--><dependencies>        <dependency>            <groupId>com.ching</groupId>            <artifactId>springmvc</artifactId>            <version>0.0.1-SNAPSHOT</version>            <type>jar</type>        </dependency></dependencies>

那么问题来了:新项目也有自己的mybatis mapping目录存放一些非基础服务的dao.xml,
此时如何顺利的将刚刚jar的mapping成功引进呢?
关键在于spring-context.xml配置文件当中,对mapping目录的映射文件的扫描,如下:

<!-- MyBatis begin -->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="dataSource" ref="dataSource"/>        <property name="typeAliasesPackage" value="com.ching"/>        <property name="typeAliasesSuperType" value="com.ching.common.persistence.BaseEntity"/>        <property name="mapperLocations" value="classpath*:/mappings/**/*.xml"/>        <property name="configLocation" value="classpath:/mybatis/mybatis-config.xml"></property>    </bean>

正常的mapping扫描配置:
<property name="mapperLocations" value="classpath:/mappings/**/*.xml"/>

需要修改为:
<property name="mapperLocations" value="classpath*:/mappings/**/*.xml"/>

阅读全文
1 0
原创粉丝点击