今天在使用maven-assembly-plugin 對生產者進行打包,然后在linux中發布時。將包打包之后,發現mybtis的xml無法識別,然后查看原因說是沒有這個包,我當時就納悶了,都是基操(基本操作)怎么會出錯。然后自己又看了幾遍配置文件。
<resource>
<directory>src/main/resources/mybatis</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
由於assembly有自己的默認存儲包,因此不指定路徑,會默認放在mybatis,即使沒有也會幫你創建(我看了很多人都沒有寫指定路徑)
按照常規操作在打包之后,檢查classes文件下面就應該有mybatis的目錄,但是我發現卻沒有。我以為是打包的方式問題,又嘗試這對整體打包,結果依然是這樣的。
<resources>
<!--用於資源拷貝-->
<resource>
<directory>src/main/resources/spring</directory>
<includes>
<include>**/*.xml</include>
</includes>
<!-- dubbo 默認去META-INF/spring目錄中加載spring配置我呢見 -->
<targetPath>META-INF/spring/</targetPath>
</resource>
<resource>
<directory>src/main/resources/mybatis</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources/resources</directory>
<includes>
<include>**/*.properties</include>
</includes>
<!--<targetPath></targetPath>-->
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
</includes>
<!--<targetPath></targetPath>-->
</resource>
</resources>
在這里,我發現在沒有指定路徑的情況下,resources下面的文件和resources目錄下的配置文件都可以打出相應的包。那我就認為我寫的應該是沒錯的。可以沒錯缺解決不了問題。然后我就目光放在了Spring打包的指路路徑的標簽,在想是否我mybatis也需要同樣的指定路徑。於是自己就在下面寫了指定路徑。
<resource>
<directory>src/main/resources/mybatis</directory>
<includes>
<include>**/*.xml</include>
</includes>
<targetPath>mybatis/</targetPath>
</resource>
這樣寫完之后,發現打完包可以顯示mybatis,放在linux里面運行也沒有問題。可是我現在也沒弄懂,為什么別人都不需要指定,而我就這么特殊。