⑴ 打包時如何加入src目錄外的資源
一般情況下,我們用到的資源文件(各種xml,properites,xsd文件等)都放在src/main/resources下面,利用maven打包時,maven能把這些資源文件打包到相應的jar或者war里。
有時候,比如mybatis的mapper.xml文件,我們習慣把它和Mapper.java放一起,都在src/main/java下面,這樣利用maven打包時,就需要修改pom.xml文件,來把mapper.xml文件一起打包進jar或者war里了,否則,這些文件不會被打包的。(maven認為src/main/java只是java的源代碼路徑)。網路上有很多方法,我大概試了下,幾種方法都可以,可以任選一種即可。
方法1,其中**/*這樣的寫法,是為了保證各級子目錄下的資源文件被打包。
<build>
<finalName>test</finalName>
<!--
這樣也可以把所有的xml文件,打包到相應位置。
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
⑵ 如何讓maven跳過某些指定的Test用例
<properties>
<maven.test.skip>true</maven.test.skip>
<maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>${maven.test.skip}</skip>
<testFailureIgnore>${maven.test.failure.ignore}</testFailureIgnore>
</configuration>
</plugin>
⑶ maven打包的時候會忽略掉空文件夾,怎樣配置讓它不忽略
我先上代碼,主要 是 maven-war-plugin 有個includeEmptyDirectories參數 ,
注意:這個參內數maven-war-plugin 2.4 的版本才支持容
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<includeEmptyDirectories>true</includeEmptyDirectories>
</configuration>
</plugin>
</plugins>
</build>
⑷ 求教java maven項目打包引入的問題,求大神解答
如果在另一個Maven項目中引入了一個打包好的jar包,並且在運行時發現缺少jar包中所依賴的第三方庫,有以下幾種解決方法。
使用maven-shade-plugin插件:在打包項目的pom.xml中配置maven-shade-plugin插件,讓它將所有的依賴庫打包進jar中。
在引入的jar包的pom.xml中增加第三方庫的依賴配置, 編寫dependency:unpack命令,將對應的第三方庫依賴解壓在項目中。
使用maven-dependency-plugin來解決問題,將依賴庫重新復制到本地倉庫中, 並在需要使用的項目中通過maven-dependency-plugin來引入這些依賴庫。
在打包好的jar中加入manifest文件,在manifest文件中配置Class-Path,將第三方庫路徑配置在Class-Path中,然後將這些第三方庫放在同一目錄下。
將jar包中的第三方庫放在項目的lib目錄下,然後在項目的編譯打包的時候加上lib路徑,這樣可以保證第三方庫能夠被項目讀取到.
選擇其中一種方法來實現可以根據具體的項目情況來確定,並且在解決問題的時候需要結合項目的特點進行選擇.
⑸ 如何解決包沖突問題
由於,lib目錄中的struts.jar和struts-core-1.3.8.jar存在沖突導致部分伺服器上應用啟動報錯,或訪問後台JSP頁面時報TILES標簽錯誤,經排查,其實struts.jar中的class文件在struts-core-1.3.8.jarstruts-taglib-1.3.8.jarstruts-tiles-1.3.8.jar中均已存在,且版本要高於struts.jar中的classstruts.jar為version1.0而struts-core-1.3.8.jar,truts-taglib-1.3.8.jar,struts-tiles-1.3.8.jar為version1.2在struts1.2中引用tilestld的寫法發生變化故解決法如下:1.去掉原strtus.jar2.去掉struts-tiles.tld3.將所有JSP頁面中的改為
⑹ maven-assembly-plugin 打包,怎麼能設置起始目錄
src-main–bin腳本庫–javajava源代碼文件–resources資源庫,會自動復制到classes目錄里–filters資源過濾文件–assembly組件的描述配置(如何打包)–config配置文件–webappweb應用的目錄。WEB-INF、css、js等-test–java單元測試java源代碼文件–resources測試需要用的資源庫–filters測試資源過濾庫-siteSite(一些文檔)target
⑺ Jenkins的maven工程打包的時候怎麼指定不同環境的配置文件
這里我們指定配置文件問test
這個是在pom.xml裡面定義的,
裡面有test,proction和devlop三個定義
在不同環境使用Jenkins的時候,-P後面加上不同的參數
我這里是測試環境,所以我這里是-Ptest
現在我們來看一下pom.xml的部分內容
⑻ Your stream was neither an OLE2 stream, nor an OOXML stream
最近使用Apache poi 做excel導出的功能,遇到了如下問題:
起初對比其他的web工程,沒有發現如何解決。最後找到拋出此異常的源碼:
org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:75)
可以看到,在調用 WorkbookFactory.create(inputStream) 來創建Workbook時,會根據文件類型(文件頭)來區別、創建合適的Workbook對象。如果不滿足前兩個if條件里的 hasPOIFSHeader() 方法,就會拋出異常。而兩個if里的hasPOIFSHeader()方法就是針對Excel2003和Excel2007的判斷,讀取文件流中的文件頭(byte[8])信息去判斷。
那既然是根據文件的頭部信息去比對進行判斷的,並且excel只有2003和2007兩個版本,那為什麼放在classpath下的excel模板讀取後創建WorkBook時,文件header判斷都不符合呢?
最後找到原因: maven編譯打包時,將resources下的資源文件轉碼了。最終web工程打出的jar/war包,裡面歸檔進去的excel模板文件都是亂碼,文件頭信息被修改,導致poi根本無法識別這樣的excel文件。
項目的pom.xml中添加maven資源插件
1、推薦使用poi-ooxml中的 WorkbookFactory.create(inputStream) 來創建Workbook,因為HSSFWorkbook和XSSFWorkbook都實現了Workbook介面。(Excel2003和Excel2007兩個版本在此通過文件header進行適配)
2、當你的工程中,需要放入一些靜態資源文件作為模板,比如excel填充模板,word模板(裡面有些固定樣式,程序運行時用模板導出報表類的),這個時候,最好都配置maven去除資源文件不被轉碼。下面的鏈接有2種方式。
Maven 打包 過濾資源文件
https://blog.csdn.net/qing_mei_xiu/article/details/80661216
⑼ static文件夾不會被打包maven
maven打包的時候會進行壓縮,把一些靜態文件壓縮,失效,解決辦法是將要要進行過濾的進行把靜態文件排除,不過濾的將這些圖標文件包含進來。