1. 程式人生 > >Gradle或Maven打包專案資原始檔問題

Gradle或Maven打包專案資原始檔問題

出現這個問題一不小心容易弄得人,心力交瘁,當我們用Gradle或者Maven構建web專案的時候,少不了要打包*.xml或者*.properties檔案,但是預設的情況下,gradle和maven總會很智慧的不去載入這麼些資源,於是乎當你採用如下形式放置檔案打包並執行web專案的時候

會出現如下的錯誤,mapper檔案繫結失敗

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.demo.mapper.UserMapper.insert
	at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:196)
	at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:44)
	at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:59)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
	at com.sun.proxy.$Proxy18.insert(Unknown Source)
	at com.demo.service.impl.UserServiceImpl.insertUser(UserServiceImpl.java:72)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)

這時候你也許會像我一樣,對自己的mapper.xml檔案找了又找卻還是找不到絲毫的錯誤,其實上面錯誤的意思是,java檔案和mapper.xml檔案繫結失敗,不出意料的話,在你build目錄下打包生成的war包或者打包檔案一定是少了這個mapper.xml檔案,下面給出Gradle和Maven構建工程打包資原始檔的方法

一、Gradle構建工程

將如下語句加入到build.gradle檔案當中

#from資料夾目錄下的所有xml檔案打包進工程
processResources {
    from('src/main/java') {
        include '**/*.xml'
    }
}

這個語句是萬能的,少了什麼加什麼

二、Maven構建工程

把如下內容加入到pom.xml檔案中的build標籤內

<resources>  
            <resource>  
                <directory>src/main/java</directory>  
                <includes>  
                    <include>**/*.properties</include>  
                    <include>**/*.xml</include>  
                </includes>  
                <!-- 是否替換資源中的屬性-->  
                <filtering>false</filtering>  
            </resource>  
            <resource>  
                <directory>src/main/resources</directory>  
                <!--  
                    <includes> <include>**/*.properties</include>  
                    <include>**/*.xml</include> </includes> <filtering>true</filtering>  
                -->  
            </resource>  
</resources> 

以上兩種酒可以解決少資原始檔的問題了,同樣的還有第三種在xml種配置指定資源路徑目錄的方式,下次碰到在補上!下面補上java檔案和xml檔案分開放置的指定路徑的配置方式。

三、到xml檔案中指定路徑

1)使用spring的情況下,首先看圖


先把檔案按照如下的位置放置,然後在spring配置檔案中加入如下程式碼

<!-- 讓spring管理sqlsessionfactory 使用mybatis和spring整合包中的 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 資料庫連線池 -->
        <property name="dataSource" ref="dataSource" />
        <!-- 載入mybatis的全域性配置檔案 -->
        <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" />

        <!--配置包的掃描路徑-->
        <property name="mapperLocations" value="classpath:com/demo/mapper/*.xml"/>
    </bean>

2)不使用spring的情況下

<beans xmlns="http://www.springframework.org/schema/beans"  
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"  
  xsi:schemaLocation="  
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd">  
  <!-- 配置介面儲存的包,用來掃描mapper介面 -->  
  <mybatis:scan base-package="edu.zju.bme.data.manage.mapper" />  
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
    <!-- 配置mapper檔案位置,掃描對映檔案,可以使用Ant風格的路徑格式 -->  
    <property name="mapperLocations" value="classpath*:mappers/**/*.xml" />  
    // ...  
  </bean>  
</beans>

相關推薦

GradleMaven打包專案原始檔問題

出現這個問題一不小心容易弄得人,心力交瘁,當我們用Gradle或者Maven構建web專案的時候,少不了要打包*.xml或者*.properties檔案,但是預設的情況下,gradle和maven總會很智慧的不去載入這麼些資源,於是乎當你採用如下形式放置檔案打包並執行web專

Gradle實現多渠道打包(不同原始檔打不同的包)

在日常開發中,我們或多或少都會碰到多渠道打包的一些問題,有些是同一個版本要上傳到不同的平臺,有些是要提供給不同的代理商,中間可能需要改動裡面的圖片或其他的一些資原始檔,對於版本比較少的我們可以簡單的替換,但是遇到很多版本時,相信再通過手動替換會令人吐血~ 廢話

Java之——qqwry.dat輸出亂碼問題及maven打包原始檔大小不一致的問題

使用qqwry.dat進行IP地理位置查詢時,遇到一個問題即在本地測試時查詢純真庫時正常,沒有任何問題,但是打包傳到伺服器上便出現了亂碼問題。1.首先排除伺服器的字符集編碼的影響使用如下命令驗證了本地和

將github的library專案新增到jitpack的gradlemaven倉庫

前言 本文主要講解怎麼將GitHub上的Library上傳到jitpack的倉庫,然後通過maven或gradle依賴到其他專案中的過程. 效果 先看完成後的結果 gradle依賴 1.專案的build.gradle allprojects { repositories {

Maven 打包專案時出現的錯誤

打包時,沒有install 依賴專案 使用maven管理的spring boot 專案,專案A 依賴專案B,在打包專案A的時候,出現下面的錯誤 報錯: Failed to execute goal on project hong-bao: Could not resolve

15 友盟專案--原始檔工具類(ResourceUtil)、sql執行工具類(ExecSQLUtil)

資原始檔工具類把sql指令碼轉換為String字串--->交給sql工具類ExecSQLUtil執行sql 1.資原始檔工具類(ResourceUtil)   把sql指令碼轉換為String字串 /** * 資原始檔工具類 */ public class Resourc

利用webpack打包其它原始檔

文章目錄 打包sass檔案 專案結構 修改原始碼 執行結果 打包less檔案 修改原始碼 執行結果 打包url中的資源 修改原始碼 執行結果

前端專案原始檔使用cdn加速

背景: 前端專案程式碼在上傳到伺服器以後 資原始檔往往會很大 而使用的雲服務一般頻寬都會很小(頻寬很貴) 所以資源往往需要放到cdn上面來加速 節約伺服器的頻寬 這裡我們使用回源的方式來實現cdn加速 假設: oss(或其他雲)的Bucket域名為https://st

maven打包專案的時候找不到jar包,但是專案裡面改已經有相關jar包

maven的setting.xm需要配置jdk 全域性 <profiles> <id>jdk-1.8</id> <activation>

Intellij IDEA使用MAVEN打包丟失程式碼原始檔夾下配置檔案

         最近用Maven建立了一個Spring Web專案,在跟Mybatis整合時,tomcat控制檯老是報錯(找不到Mapper對應的XML配置檔案),無意中發現編譯後的classes資料夾(或者war包)對應的目錄根本沒有相應的xml配置檔案。解決方式是,在

Android studio專案原始檔分包

有很多人說專案要模組化,當需要這個模組直接拿出來用就行,之前只知道對activity進行分包儲存,卻一直未對資原始檔分包,導致一個模組想拿出來用他太麻煩了,找了很多資料,最終還是找到了,感覺很贊!這裡

Maven 打包專案 部署到伺服器 重啟服務 外掛

1、maven外掛wagon-maven-plugin自動部署遠端Linux伺服器  (http://xxgblog.com/2015/10/23/wagon-maven-plugin/) <plugin> <grou

Maven_Eclipse_Eclipse下使用maven 打包專案

構建一個Maven專案後, 我們可以在命令列中 使用 mvn package 將專案輸出為 jar 檔案,但是一般我們都是使用 IDE 進行專案開發的。 如何在IDE Eclipse 中完成這個過程呢

關於使用maven打包專案(簡述)

首先 我們需要去安裝maven , 這裡給出一個下載 地址:http://maven.apache.org/index.html 下載解壓後,進行環境變數的配置 新增新的系統環境變數MAVEN_HOME, 並設定其值為你安裝的目錄       MAVEN_HOME= D:

IDEA maven打包專案到阿里雲伺服器Tomcat部署流程

1.購買阿里雲伺服器和使用(簡略) 有意購買伺服器的朋友可以領取優惠券再購買哦,最高1000元優惠呢,優惠券地址: 本人選擇的是輕量級應用伺服器,如果你喜歡也可以選擇另一個,環境選擇系統映象--Windows Server 2012...--華南 當然,系統

maven打包專案時候報錯 java:1:非法字元: \65279

[ERROR] [解析開始時間D:\workspace\src\main\java\com\service\ProcessCenterUpdateServiceImpl.java] [ERROR]D:\workspace\\src\main\java\com\\servic

maven編譯後原始檔損壞

第一種方式 maven打包時,過濾不編譯檔案型別 <plugin> <groupId>org.ap

使用 Maven 外掛將 class(位元組碼檔案),resource(原始檔),lib(依賴的jar包)分開打包

1. 在pom檔案中對各個外掛進行配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20

build.gradle的高階運用,通過Groovy語言合理的編譯打包程式碼,避免原始檔冗餘

懶人Android開發。最近做專案,一個專案(一套程式碼)針對多個客戶,要出多個版本,但不同的客戶需求導致專案程式碼有細微的不同,以及應用載入的資源圖片都是不一樣,如果僅僅是程式碼細微差別還好,但是資源圖片載入的都不一樣,這導致apk大包資源圖片冗餘大,這並不是我們所希望

利用MAVEN打包時,如何包含更多的原始檔

首先,來看下MAVENx專案標準的目錄結構:   一般情況下,我們用到的資原始檔(各種xml,properites,xsd檔案等)都放在src/main/resources下面,利用maven打包時,maven能把這些資原始檔打包到相應的jar或者war裡。 有