maven自定義目錄
阿新 • • 發佈:2019-02-05
maven優勢於Ant的原因有很大一部分來自於maven減少了手動的配置,這也導致了他結構的特殊。
maven遵循約定大於配置,預設目錄為:
目錄src/main/java | java原始碼目錄 |
目錄src/main/resources | 資原始檔目錄 |
目錄src/test/java | 測試java原始碼目錄 |
目錄src/test/resources | 測試資原始檔目錄 |
目錄target | 打包輸出目錄 |
目錄target/classes | 編譯輸出目錄 |
目錄target/test-classes | 測試編譯輸出目錄 |
目錄target/site | 專案site輸出目錄 |
目錄src/main/webapp | web應用檔案目錄(當打包為war時),如WEB-INF/web.xml |
jar | 預設打包格式 |
*Test.java | Maven只會自動執行符合該命名規則的測試類 |
%user_home%/.m2 | Maven預設的本地倉庫目錄位置 |
中央倉庫 | Maven預設使用遠端中央倉庫:http://repo1.maven.org/maven2 |
1.3 | Maven Compiler外掛預設以1.3編譯,因此需要額外配置支援1.5 |
但它也支援對約定目錄的自定義更改,通常不建議更改maven預設目錄,這將導致maven不能正常處理對應的邏輯,例如:
上訴程式碼將java原始碼存放在了src/java中,test原始碼存放在了src/test中,將編譯後的java檔案放在了out/classes中,編譯後的測試檔案放在了output/test-classes中,執行後的打包檔案存放在target/jar中。<build> <sourceDirectory>src/java</sourceDirectory> <testSourceDirectory>src/test</testSourceDirectory> <outputDirectory>output/classes</outputDirectory> <testOutputDirectory>output/test-classes</testOutputDirectory> <directory>target/jar</directory> </build>
通常情況下我們會修改webapp目錄為WebContent目錄,需做如下配置:
<build> <finalName>ThesisManage</finalName> <!-- 自定義maven結構目錄 --> <sourceDirectory>src/main/java</sourceDirectory> <resources> <resource> <directory>src/main/resources</directory> </resource> </resources> <testResources> <testResource> <directory>src/test/resources</directory> </testResource> </testResources> <plugins> <!-- 定義編譯版本為1.7,字元編碼為utf8 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> <!-- 修改webapp目錄為WebContent --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <!-- 設定WebContent目錄為Web目錄 --> <webappDirectory>${basedir}/WebContent</webappDirectory> <warSourceDirectory>${basedir}/WebContent</warSourceDirectory> </configuration> </plugin> </plugins> </build>
其中<webappDirectory>:產生war前,用於存放war的目錄
<warSourceDirectory>:將web專案做成eclipse下的WTP型別,即是用WebContent替換webapp
另外:<packagingExcludes>、<warSourceExcludes>都可以用來忽略打war時的部分包的,如:
<packagingExcludes>
WEB-INF/lib/spring-2.5.**.jar,
WEB-INF/lib/jersey-servlet-1.17.1.jar
</packagingExcludes>
上面表示在打war包時忽略spring-2.5的包和jersey-servlet-1.17.1.jar注意:當修改maven的結構為WebContent代替webapp後,部署專案的時候應該使用外部發布模式。因為maven預設是在webapp/WEB-INF下查詢applicationContext.xml配置檔案,所以應該手動指定它的查詢目錄。
如: